谷歌seo站内优化,做网站有哪些流程,北京动力 网站建设,商城网站数据库基于Labwindows CVI 2017编写的一个简单的串口调试助手#xff0c;附带接收一个00–99的两位数并进行波形绘制的功能#xff0c;编写过程可见#xff1a;https://blog.csdn.net/Stark_/article/details/129003839 #include ansi_c.h #include rs232.h #incl…基于Labwindows CVI 2017编写的一个简单的串口调试助手附带接收一个00–99的两位数并进行波形绘制的功能编写过程可见https://blog.csdn.net/Stark_/article/details/129003839 #include ansi_c.h #include rs232.h #include cvirte.h #include userint.h #include SerialDebug.h
#define MAX_BUF_NUM 512
static int panelHandle; //主界面句柄
int comSelect 0; //串口号 int status; int ComState 0; //串口开关状态 char info[MAX_BUF_NUM1]; //串口数据缓冲区 //设置页面控件状态stat 0表示关闭1表示打开 //SetCtrlAttribute(,,ATTR_DIMMED,)将对应控件属性变暗和变亮以禁用和使用对应控件 int CVIFUNC DimObject(int stat) { SetCtrlAttribute(panelHandle,PANEL_COMSELECT,ATTR_DIMMED,stat); //串口号选择 SetCtrlAttribute(panelHandle,PANEL_BAUDSELECT,ATTR_DIMMED,stat); //波特率 SetCtrlAttribute(panelHandle,PANEL_CHECKSELECT,ATTR_DIMMED,stat);//校验位 SetCtrlAttribute(panelHandle,PANEL_LONGSELECT,ATTR_DIMMED,stat); //数据位 SetCtrlAttribute(panelHandle,PANEL_STOPSELECT,ATTR_DIMMED,stat);//停止位 SetCtrlAttribute(panelHandle,PANEL_OPEN_COM,ATTR_DIMMED,stat); //打开串口 SetCtrlVal(panelHandle,PANEL_LED,stat); //LED SetCtrlAttribute(panelHandle,PANEL_CLOSE_COM,ATTR_DIMMED,!stat); //关闭串口 SetCtrlAttribute(panelHandle,PANEL_SEND,ATTR_DIMMED,!stat);//发送 return 0; }
int main (int argc, char *argv[]) { if (InitCVIRTE (0, argv, 0) 0) return -1; /* out of memory */ if ((panelHandle LoadPanel (0, SerialDebug.uir, PANEL)) 0) return -1; DimObject(0); DisplayPanel (panelHandle); RunUserInterface (); DiscardPanel (panelHandle); return 0; }
int CVICALLBACK PanelMain (int panel, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_GOT_FOCUS: break; case EVENT_LOST_FOCUS: break; case EVENT_CLOSE: QuitUserInterface (0);//关闭面板0主面板 break; } return 0; }
int CVICALLBACK ComOpen (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { int comValue,baudValue,checkValue,longValue,stopValue; switch (event) { case EVENT_COMMIT: GetCtrlVal(panelHandle,PANEL_COMSELECT,comValue); //获取串口号 GetCtrlVal(panelHandle,PANEL_BAUDSELECT,baudValue); //获取波特率 GetCtrlVal(panelHandle,PANEL_CHECKSELECT,checkValue);//获取校验位 GetCtrlVal(panelHandle,PANEL_LONGSELECT,longValue);//获取数据位 GetCtrlVal(panelHandle,PANEL_STOPSELECT,stopValue);//获取停止位 //设置和打开串口 status OpenComConfig(comValue,,baudValue,checkValue,longValue,stopValue,MAX_BUF_NUM,MAX_BUF_NUM); if(status!0) { MessagePopup(Error,config failed!); //弹窗提示 ComState 0; return 0; } SetCTSMode(comValue,LWRS_HWHANDSHAKE_OFF); /* 禁止硬件握手即不用RTS/CTS和DTR/DSR */ FlushInQ(comValue); //清空输入队列的缓存数据 FlushOutQ(comValue); //清空输出队列的缓存数据 comSelect comValue; DimObject(1); ComState 1; //串口开启状态 break; } return 0; }
int CVICALLBACK ClearTextBox (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: if(control PANEL_CLEARRECEIVE)//清除接收控件 ResetTextBox(panelHandle,PANEL_RECEIVETEXT,\0);//清除接收框 else ResetTextBox(panelHandle,PANEL_SENDTEXT,\0);//清除发送框 break; } return 0; }
int CVICALLBACK Send (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: if(!comSelect) return -1; //发送出错 GetCtrlVal(panelHandle,PANEL_SENDTEXT,info);//获取要发送的文本 status ComWrt(comSelect,info,strlen(info));//发送 if(status ! strlen(info)) MessagePopup(Error,Send data failed!); //弹窗提示 break; } return 0; }
int CVICALLBACK Timer (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { int i 0; int len 0; double point 0; switch (event) { case EVENT_TIMER_TICK: if(ComState) { if(!comSelect) return -1; SetComTime(comSelect,1); //设置一帧数据的接收超时时间为1s len GetInQLen(comSelect); status ComRd(comSelect,info,len);//接收,GetInQLen用于得到Com口的输入队列数据缓存的大小 if(status0) { //MessagePopup(Error,Read data failed!); //弹窗提醒没有读取到信息 break; } //将信息写入接收框 info[status] \0; SetCtrlVal(panelHandle,PANEL_RECEIVETEXT,info); //设置接收文本框显示info的内容 SetActiveCtrl(panelHandle,PANEL_RECEIVETEXT); if((len 2)||(info[2] 0x0D)) //收到两个字符或者第三个字符是回车 { point (info[0]-48)*10 (info[1]-48); //接收一个两位数比如 01、09、10、90、AB if((point0)(point99))//判定这个两位数属于00-99之间 { PlotStripChartPoint(panelHandle,PANEL_WAVE_DISPLAY,point); //对于在范围内的数据进行绘制点 } } for(0;ilen;i) { info[i]0; i; } } break; } return 0; }
int CVICALLBACK ComClose (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: CloseCom(comSelect); //关闭串口 comSelect 0; DimObject(0); ComState 0; break; case EVENT_TIMER_TICK: break; } return 0; }