#include "toolbox.h"
#include <ansi_c.h>
#include <rs232.h>
#include <cvirte.h>
#include <userint.h>
#include "chuankou.h"
static int panelHandle;
int com;
void CVICALLBACK com_callback (int portNumber, int eventMask, void *callbackData);
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "chuankou.uir", PANEL)) < 0)
return -1;
DisplayPanel (panelHandle);
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
}
int CVICALLBACK PANEL_callback (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);
break;
}
return 0;
}
int CVICALLBACK COM_send_callback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{ char buf[1024];
switch (event)
{
case EVENT_COMMIT:
memset(buf,0,1024);
GetCtrlVal (panelHandle, PANEL_send, buf);
if(strlen(buf)!=0)
{
ComWrt(com+1,buf,sizeof(buf));//写
}
break;
}
return 0;
}
int CVICALLBACK BINARYSWITCH_callback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int val;
char lab_com[10];
int bod;
switch (event)
{
case EVENT_COMMIT:
memset(lab_com,0,10); //初始化
GetCtrlVal (panelHandle, PANEL_BINARYSWITCH, &val); //得到开关的值
GetCtrlVal (panelHandle, PANEL_COM, &com); //得到com口
GetLabelFromIndex (panelHandle, PANEL_COM, com, lab_com); //得到device名称 也就是lab_com
GetCtrlVal (panelHandle, PANEL_BOD, &bod); //得到波特率
if(val==1) //打开
{
DisableBreakOnLibraryErrors();
OpenComConfig (com+1, lab_com, 9600, 0, 8, 1, 512, 512);//设置参数
SetXMode (com+1, 0);//关闭XOFF
SetCTSMode (com+1, 0);
EnableBreakOnLibraryErrors();
SetComTime(com+1,0.1);//设置超时时间
FlushInQ(com+1);
FlushOutQ(com+1);
InstallComCallback (com+1, LWRS_RECEIVE, 2, 0, com_callback, 0); //安装回调函数
SetCtrlVal (panelHandle, PANEL_LED, 1); //打开led灯
SetCtrlAttribute (panelHandle, PANEL_TIMER, ATTR_ENABLED,1); //打开计时器
}
else //关闭
{
SetCtrlVal (panelHandle, PANEL_LED, 0);
CloseCom(com+1);
SetCtrlAttribute (panelHandle, PANEL_TIMER, ATTR_ENABLED,0);
}
break;
}
return 0;
}
int CVICALLBACK TIMER_callback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
double val;
switch (event)
{
case EVENT_TIMER_TICK:
GetCtrlVal (panelHandle, PANEL_NUMERIC, &val);
PlotStripChart (panelHandle, PANEL_STRIPCHART, &val, 1, 0, 0, VAL_DOUBLE); //画图
break;
}
return 0;
}
void CVICALLBACK com_callback (int portNumber, int eventMask, void *callbackData)
{
char buf[1024];
memset(buf,0,1024);
ComRd (com+1,buf,1024); //读
InsertTextBoxLine (panelHandle, PANEL_recv, -1, buf); //把下位机的值写到文本框里
SetCtrlVal (panelHandle, PANEL_NUMERIC,atof(buf)); //把转换的double的值 读入numeric
}
LabwindowsCVI上位机通过串口向STM32发送数据程序分享
最新推荐文章于 2024-06-11 17:27:14 发布