package Ġcom . bec . hardware library . common Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroid _ serial port _ api . Serial Port Ċ import Ġcom . bec . hardware library . callback . On Serial Port Received Ċ import Ġcom . bec . hardware library . utils . Func Util Ċ import Ġcom . bec . hardware library . utils . Utils Ċ import Ġjava . io .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġ æĿİ åį ĵ é¹ ı Ġon Ġ 2 0 1 9 / 3 / 5 Ġ 0 0 0 5 . Ċ Ġ*/ Ċ abstract Ġclass ĠSerial Port Controller ( private Ġval Ġserial Port Device : ĠSerial Port Device ) Ġ{ ĊĊĠĠĠ Ġ// ä¸² åı£ æĺ¯åĲ¦ åı¯çĶ¨ ĊĠĠĠ Ġpublic Ġvar Ġenable : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ// æĺ¯åĲ¦ å±ķç¤º ä¸² åı£ æķ°æį® ĊĠĠĠ Ġvar Ġshow Serial Port Data : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġserial Port : ĠSerial Port ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar ĠinputStream : ĠInputStream ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar ĠoutputStream : ĠOutputStream ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġread Thread : ĠRead Thread ? Ġ= Ġnull ĊĊĠĠĠ Ġ// ä¸² åı£ è¯» æķ° ĊĠĠĠ Ġabstract Ġvar Ġon Serial Port Received : ĠOn Serial Port Received ? ĊĊĠĠĠ Ġ// è®¾ç½® ç¼ĵåŃĺ åĮº å¤§å°ı ĊĠĠĠ Ġopen Ġfun Ġset BufferSize (): ĠInt Ġ= Ġ 5 1 2 ĊĊĠĠĠ Ġ// æīĵå¼Ģ ä¸² åı£ ï¼Į æİ¥æĶ¶ æķ°æį® ĊĠĠĠ Ġpublic Ġopen Ġfun Ġopen () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( serial Port Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdevice Ġ= ĠFile ( serial Port Device . serial Port ()) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! device . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠFileNotFoundException (" å½ĵåīį è®¾å¤ĩ ä¸įåŃĺåľ¨ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġserial Port Ġ= ĠSerial Port ( device , Ġserial Port Device . ba ud Rate (), Ġ 0 ) ĊĊĠĠĠĠĠĠĠ ĠinputStream Ġ= Ġserial Port ?. inputStream ĊĠĠĠĠĠĠĠ ĠoutputStream Ġ= Ġserial Port ?. output Stream ĊĊĠĠĠĠĠĠĠ Ġon Serial Port Received ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Thread Ġ= ĠRead Thread () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Thread ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread Running Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġkotlin . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Thread ?. thread Running Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Thread Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġenable Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// åħ³éĹŃ ä¸² åı£ ãĢģ è¯» çº¿ç¨ĭ ĊĠĠĠ Ġpublic Ġopen Ġfun Ġclose () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( serial Port Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġread Thread ?. thread Running Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġread Thread Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ ĠinputStream ?. close () ĊĠĠĠĠĠĠĠ ĠinputStream Ġ= Ġnull ĊĠĠĠĠĠĠĠ ĠoutputStream ?. close () ĊĠĠĠĠĠĠĠ ĠoutputStream Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġserial Port ?. close () ĊĠĠĠĠĠĠĠ Ġserial Port Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġenable Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åıĳéĢģ æķ°æį® ĊĠĠĠĠ Ġ* Ġ@ param Ġsend Array ĠByteArray ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġopen Ġfun Ġsend ( send Array : ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream ?. write ( send Array ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġt ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åıĳéĢģ 1 6 è¿ĽåĪ¶ ĊĠĠĠĠ Ġ* Ġ@ param Ġsend Hex ĠString ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġopen Ġfun Ġsend Hex ( send Hex : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsend ( Func Util . hex To Byte Arr ( send Hex )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åıĳéĢģ åŃĹç¬¦ä¸² ĊĠĠĠĠ Ġ* Ġ@ param Ġsend Txt ĠString ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġsend Txt ( send Txt : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsend ( send Txt . toByteArray ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠRead Thread Ġ: ĠThread () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġvar Ġthread Running Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Synchron ized ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . run () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( thread Running ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( set BufferSize ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠinputStream ?. read ( buffer ) Ġ?: Ġ- 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( size Ġ> Ġ 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Serial Port Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġbuffer . content ToString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Serial Port Received ?. on Received ( buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Serial Port Controller " ĊĠĠĠ Ġ} Ċ Ċ }