Receiving RS232 and not having to wait for input
Octahedron
Posts: 18
I was wondering if there is a generally accepted way to receive RS232 input but not have to wait around for it to show up? I have a device that will transmit data when it feels like it and I am doing some other things at the same time and what to check if there is something to look at in my own time and not wait for the device to send me something. I have used a new cog to run some spin code that does just that (I think) but I was wondering if there was an easy way/object/other for this or a common method?
Here is what I am doing and please hold the giggles.
Here is what I am doing and please hold the giggles.
CON _clkmode = xtal1 + pll16x _xinfreq = 5_000_000 ' debug - USE onboard pins pcDebugRX = 31 pcDebugTX = 30 pcMode = 0 CmdDebugRx = 25 CmdDebugTx = 24 ' serial baud rates pcDebugBaud = 115200 CmdDebugBaud = 9600 Var Byte Command long Cog[2] long stack[132] OBJ Debug : "FullDuplexSerialPlus" '....added this to do sum debugging CmdDebug : "FullDuplexSerialPlus" ReturnCom : "GadgetRS232Com2" PUB Start : okay Debug.Start(pcDebugRX,pcDebugTX,pcMode,pcDebugBaud) ' start the debugger cmdDebug.Start(CmdDebugRX,CmdDebugTX,pcMode,cmdDebugBaud) ' start the debugger 'if cog > 0 'cogstop(cog) 'cog := cognew(ReturnCom.start(pcDebugRX,pcDebugTX,pcMode,pcDebugBaud,CmdDebugRX,CmdDebugTX), @stack[0]) waitcnt(ClkFreq * 5 + cnt) 'wait a bit to give time to activate the Serial terminal Debug.tx(13) cog[0] := cognew(GetCmdInput, @stack[0]) + 1 waitcnt(clkfreq/2 + cnt) cog[1] := cognew(GetPCinput, @stack[66]) + 1 ' cogstop(cog[1]) ' cog[1] := cognew(GetPCinput, @stack[66]) + 1 repeat PUB GetCmdInput :count 'cmdDebug.str(string("Starting RGB control Program!", 13)) Debug.str(string("Starting RS232 OO output to PC!", 13)) CmdDebug.rxFlush Count := 0 repeat Command := CmdDebug.Rx if command == 32 Debug.tx(13) ' count := 0 'count += 1 'Debug.hex(Command, 2) Debug.tx(Command) Command := 0 PUB SetUpOOSpec 'cmdDebug.str(string("Starting RGB control Program!", 13)) Debug.str(string("Config OO spec!", 13)) Debug.rxFlush repeat Command := Debug.Rx CmdDebug.tx(Command) Command := 0 PUB GetPCInput : Char 'cmdDebug.str(string("Starting RGB control Program!", 13)) Debug.str(string("Starting RS232 Com to OO spec!", 13)) Debug.rxFlush repeat Char := Debug.Rx CmdDebug.tx(Char) Char := 0
Comments
-Phil