int RS232_Setup(unsigned long nBaudRate, unsigned long nDataBit, unsigned long nParity, unsigned long nStopBit) { int ret = -1; COM_PARAM param; if (g_rs232_com < 0) { ret = COM_Open(0); if (ret < 0) { return -1; } g_rs232_com = ret; } param.nBaudRate = nBaudRate; param.nDataBits = nDataBit; param.nParity = nParity; param.nStopBits = nStopBit; param.nFlowCtrl = 0; ret = COM_Setup(g_rs232_com, param); if (ret < 0) { return -1; } return 0; }
int COM_Open( int comX ) { int item; item = COM_Open(comX,COM_BAUD_NULL,NULL); return(item); }
int COM_Open( int comX, long baud ) { int item; item = COM_Open(comX,baud,NULL); return(item); }
int RS232_Open() { int ret = -1; ret = COM_Open(0); if (ret < 0) { return -1; } g_rs232_com = ret; return 0; }
int FOB_Open( int comX, int birdsinflock, int birdsonport, BYTE addr, long baud, double freq, WORD scale, BYTE &datamode, BYTE &groupmode, BYTE dataformat[], BYTE hemisphere[] ) { int ID=FOB_PORT_INVALID; int step,retry,bird; BOOL ok,fatal,multiport,multibird; int comH=COM_INVALID; BYTE code; // Check that FOB API is running... if( !FOB_API_check() ) { return(FOB_PORT_INVALID); } FOB_debugf("FOB_Open(COM%d,birds=%d/%d,base=0x%02X,%ld baud,...)\n",comX,birdsonport,birdsinflock,addr,baud); // Go through each step of FOB_Open() and continue only if successful... for( ok=TRUE,retry=0,step=FOB_OPEN_PARAMETERS; ((step <= FOB_OPEN_DONE) && ok); ) { switch( step ) { case FOB_OPEN_PARAMETERS : // Set defaults and then check parameters... ok = FOB_OpenParameters(birdsinflock,birdsonport,datamode,groupmode,multiport,multibird); break; case FOB_OPEN_HANDLEGET : // Find a free handle ID... if( (ID=FOB_Free()) == FOB_PORT_INVALID ) { FOB_errorf("FOB_Open(...) No free handles.\n"); ok = FALSE; break; } FOB_debugf("ID=%d\n",ID); FOB_Init(ID); // Clear the handle item... break; case FOB_OPEN_COMOPEN : // Open RS232 communications port... ok = ((comH=COM_Open(comX)) != COM_INVALID); STR_printf(ok,FOB_debugf,FOB_errorf,"FOB_Open(...) Open COM%d %s.\n",comX,STR_OkFailed(ok)); break; case FOB_OPEN_COMSETUP : // Set FOB RS232 characteristics... ok = COM_Setup(comH,baud,FOB_DCB); STR_printf(ok,FOB_debugf,FOB_errorf,"FOB_Open(...) Setup COM%d %s.\n",comX,STR_OkFailed(ok)); break; case FOB_OPEN_HANDLESET : // Setup FOB handle structure with information... FOB_Port[ID].used = TRUE; FOB_Port[ID].started = FALSE; FOB_Port[ID].comH = comH; FOB_Port[ID].comX = comX; FOB_Port[ID].baudrate = baud; FOB_Port[ID].birdsinflock = birdsinflock; FOB_Port[ID].birdsonport = birdsonport; FOB_Port[ID].scale = scale; if( addr == FOB_ADDR_NULL ) { addr = 0x01; } for( bird=0; (bird < birdsonport); bird++ ) { FOB_Port[ID].dataformat[bird] = dataformat[bird]; FOB_Port[ID].hemisphere[bird] = hemisphere[bird]; FOB_Port[ID].address[bird] = addr++; } break; case FOB_OPEN_COMRESET : // Reset COM buffer... ok = FOB_ResetCOM(ID); break; case FOB_OPEN_FOBRESET : // Reset FOB hardware... if( retry > 0 ) { ok = FOB_ResetFOB(ID); } break; case FOB_OPEN_FOBCONFIG : // Set FOB configuration... ok = FOB_CmdConfig(ID); break; case FOB_OPEN_FOBERROR : // Check FOB error status... break; if( !(ok=FOB_GetErrorCode(ID,FOB_BIRD_NULL,code,fatal)) ) { break; } STR_printf(fatal,FOB_errorf,FOB_debugf,"FOB_Open(...) %s.\n",FOB_Error(code)); if( fatal ) { ok = FALSE; } break; case FOB_OPEN_FOBSTATUS : // Check bird status... if( !(ok=FOB_BirdStatusOK(ID)) ) { FOB_errorf("FOB_Open(...) Status Error.\n"); } ok = TRUE; break; case FOB_OPEN_OBJECTS : FOB_Port[ID].session = new TIMER(STR_stringf("FOB[%d] Session",ID)); FOB_Port[ID].requestrate = new TIMER_Frequency(STR_stringf("FOB[%d] RequestRate",ID)); FOB_Port[ID].looprate = new TIMER_Frequency(STR_stringf("FOB[%d] LoopRate",ID)); FOB_Port[ID].framerate = new TIMER_Frequency(STR_stringf("FOB[%d] FrameRate",ID)); FOB_Port[ID].frametime = new TIMER_Interval(STR_stringf("FOB[%d] FrameTime",ID)); FOB_Port[ID].framelast = new TIMER(STR_stringf("FOB[%d] FrameLast",ID)); FOB_Port[ID].framewait = new DATAPROC(STR_stringf("FOB[%d] FrameWait",ID)); break; case FOB_OPEN_DONE : FOB_Use(ID); // Set global variable for default ID... break; } STR_printf(ok,FOB_debugf,FOB_errorf,"FOB_Open(...) %s %s.\n",FOB_OpenStep[step],STR_OkFailed(ok)); if( !ok && FOB_Hardware[step] ) // FOB hardware failed, try FOB reset... { if( ++retry <= 1 ) { step = FOB_OPEN_FOBRESET; ok = TRUE; } } else { step++; } } if( !ok ) // FOB open failed, so clean up... { COM_Close(comH); // Close COM handle. FOB_Init(ID); // Clear FOB handle. ID = FOB_PORT_INVALID; } return(ID); }