package Ġsim r acing Ċ Ċ import Ġg nu . io . Comm Port Identifier Ċ import Ġg nu . io . Serial Port Ċ Ċ class ĠS mc 3 Controller Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġserial Port : ĠSerial Port ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġconnect ( port : ĠString , Ġlistener : Ġ( response : ĠCommand . Response ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSystem . setProperty (" java . ext . dirs ", Ġ". ") ĊĠĠĠĠĠĠĠ Ġval Ġport Identifier Ġ= ĠCom m Port Identifier . getPort Identifier ( port ) ĊĠĠĠĠĠĠĠ Ġ// println ( port Identifier . name ) Ġ// Ġ/ dev / tty S 3 3 ĊĠĠĠĠĠĠĠ Ġ// println ( port Identifier . port Type ) Ġ// ĠPORT _ SERIAL ĊĠĠĠĠĠĠĠ Ġif Ġ( port Identifier . is Currently Owned ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" is Currently Owned ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcomm Port Ġ= Ġport Identifier . open ( S mc 3 Controller :: class . java . name , Ġ 2 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġserial Port Ġ= Ġcomm Port Ġas ĠSerial Port ĊĠĠĠĠĠĠĠ Ġ// 5 0 0 0 0 0 , Ġ 8 , Ġ 1 , ĠNONE ĊĠĠĠĠĠĠĠ Ġserial Port ?. set Serial Port Params ( 5 0 0 0 0 0 , ĠSerial Port . DAT AB ITS _ 8 , ĠSerial Port . STOP BITS _ 1 , ĠSerial Port . PAR ITY _ NONE ) ĊĠĠĠĠĠĠĠ Ġserial Port ?. inputStream ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread ( Serial Reader ( it , Ġlistener )). start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend ( byteArray : ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġserial Port ?. output Stream ?. write ( byteArray ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ