📄 sample12_rs.c
字号:
#include <formatio.h>
#include <rs232.h>
#include <cvirte.h> /* Needed if linking in external compiler; harmless otherwise */
#include <userint.h>
#include "sample12_rs.h"
static int panelHandle;
int baudrate,status,comport;
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1;
if ((panelHandle = LoadPanel (0, "sample12_rs.uir", PANEL)) < 0)
return -1;
DisplayPanel (panelHandle);
RunUserInterface ();
return 0;
}
int CVICALLBACK PanelCallback (int panel, int event, void *callbackData,
int eventData1, int eventData2)
{
switch (event)
{
case EVENT_CLOSE:
QuitUserInterface (0);
break;
}
return 0;
}
int CVICALLBACK ConfigCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
char devicename[10];
switch (event)
{
case EVENT_COMMIT:
//获取COMPORT、BAUDRATE控件值
GetCtrlVal (panel, PANEL_COMPORT, &comport);
GetCtrlVal (panel, PANEL_BAUDRATE, &baudrate);
//从COMPORT控件得到设备名
GetLabelFromIndex (panel, PANEL_COMPORT, comport-1, devicename);
//配置COM 端口
status = OpenComConfig (comport, devicename, baudrate, 0, 7, 1, 0, 0);
//配置失败,显示出错信息
if(status!=0) MessagePopup ("Error", "Config failed!");
//如果配置成功,设置TEXTBOX、SEND、
//READ、BYTESTOREAD、CLEAR、FLUSHOUTQ、FLUSHINQ控件有效
SetCtrlAttribute (panel, PANEL_TEXTBOX, ATTR_DIMMED, -status);
SetCtrlAttribute (panel, PANEL_SEND, ATTR_DIMMED, -status);
SetCtrlAttribute (panel, PANEL_READ, ATTR_DIMMED, -status);
SetCtrlAttribute (panel, PANEL_BYTESTOREAD, ATTR_DIMMED, -status);
SetCtrlAttribute (panel, PANEL_CLEAR, ATTR_DIMMED, -status);
SetCtrlAttribute (panel, PANEL_FLUSHOUTQ, ATTR_DIMMED, -status);
SetCtrlAttribute (panel, PANEL_FLUSHINQ, ATTR_DIMMED, -status);
break;
}
return 0;
}
int CVICALLBACK ReadCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int bytes;
char data[2000];
switch (event)
{
case EVENT_COMMIT:
//获取BYTESTOREAD控件值
GetCtrlVal (panel, PANEL_BYTESTOREAD, &bytes);
//从COM端口读取数据
status=ComRd (comport, data, bytes);
//读取数据是否成功
if(status<0)
{
//读取数据失败,显示出错信息并退出
MessagePopup ("Error", "Read data failed!");
break;
}
//将读取的数据显示在TEXTBOX控件中
ResetTextBox (panel, PANEL_TEXTBOX, data);
break;
}
return 0;
}
int CVICALLBACK SendCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int bytes;
char data[2000];
switch (event)
{
case EVENT_COMMIT:
//获取TEXTBOX控件的值
GetCtrlVal (panel, PANEL_TEXTBOX, data);
//向COM端口发送数据
bytes = StringLength (data);
//发送数据失败,显示出错信息
status=ComWrt (comport, data, bytes);
if(status!=bytes)
MessagePopup ("Error", "Send data failed!");
break;
}
return 0;
}
int CVICALLBACK ClearCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
//设置控件TEXTBOX为空
ResetTextBox (panel, PANEL_TEXTBOX, "\0");
break;
}
return 0;
}
int CVICALLBACK QuitCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);
break;
}
return 0;
}
int CVICALLBACK FlushOutQCallBack(int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
switch (event) {
case EVENT_COMMIT :
//清空输出队列
FlushOutQ (comport);
MessagePopup ("RS232 Message", "Output queue flushed.");
break;
}
return(0);
}
int CVICALLBACK FlushInCallBack(int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
switch (event) {
case EVENT_COMMIT :
//清空输入队列
FlushInQ (comport);
MessagePopup ("RS232 Message", "Input queue flushed.");
break;
}
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -