Po ndërtoj një aplikacion për të komunikuar me një modul Xbee nëpërmjet API-së Xbee.
Aktualisht kam diçka që funksionon, por është mjaft e thjeshtë dhe ka mjaft kufizime.
Sub processPackets() ' this runs as its own thread
'remove data from serial buffer and format in to packet
'if IO response generated remotely, not requested put in IOQueue
'Otherwise put in CMDQueue (response generate from request, ie cmd response or packet Ack
End Sub
Më pas si shembull i një kërkese tipike komandimi Dërgoni të dhëna në portin serik Loop (me afat kohor) duke kontrolluar CMDQueue për paketën, vendoseni në radhë dhe kontrolloni nëse përputhet. Përndryshe skadon
Tani janë mjaft të dukshme problemet e mundshme me këtë metodë. Në veçanti, meqenëse modulet Xbee mund të flenë, mund t'ju duhet të prisni një kohë të gjatë për një Ack. Plus varet nga porosia, etj.
Do të doja të bëja një qasje jo-bllokuese. Në këtë rast, për të vepruar në paketën Ack/response në shumicën e rasteve më duhet të di paketën origjinale të cilës i është dërguar si përgjigje.
Po mendoj të krijoj disa tema. SendPacket do të dërgojë paketën, do të ngarkojë paketën e dërguar, kohën e dërguar dhe afatin në memorie, do të përfshijë gjithashtu funksionin e kthimit të thirrjes? (array?) PacketProc do të analizojë paketat, do të kontrollojë grupin e paketave që presin për përgjigje dhe do të thërrasë funksionin e kthimit të thirrjes. Do të kontrollojë gjithashtu për ndonjë paketë pritjeje që ka skaduar dhe do të thërrasë kthimin e telefonatës për të treguar afatin?
Në fund të fundit, unë jam duke kërkuar për aftësinë për të dërguar paketa në pajisje të shumta (mund të përgjigjet në çdo mënyrë) dhe të veproj sipas atyre përgjigjeve ose të veproj në kohën e skadimit.
Unë nuk jam veçanërisht i njohur me .NET, a mundet dikush të komentojë këtë qasje ose të rekomandojë një model më të mirë për t'u parë? Ndonjë metodë .Net në të cilën duhet të shikoj?