#include <userint.h>
#include <rs232.h>
#include <ansi_c.h>
#include <cvirte.h>
#include <formatio.h>
#include "car.h"
static int panelHandle;
char chuankou;
void CVICALLBACK ComCallback(int portNo,int eventMask,void *callbackData);
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdLine, int nCmdShow)
{
if (InitCVIRTE (hInstance, 0, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "car.uir", PANEL)) < 0)
return -1;
GetCtrlVal(PANEL,PANEL_NUMERIC,&chuankou);//获得设定的串口值
OpenComConfig(chuankou,"",115200,0,8,1,512,512);
//设置串口波特率115200,无校验、8位数据、1位停止位
SetCTSMode(chuankou,LWRS_HWHANDSHAKE_OFF);//关闭硬件握手
FlushInQ(chuankou);//清空指定串口输入队列
FlushOutQ(chuankou);//清空指定串口输出队列
DisplayPanel (panelHandle);//在屏幕上显示面板
RunUserInterface ();//允许在用户界面操作
CloseCom(chuankou);//关闭串口
DiscardPanel (panelHandle);//清楚面板
return 0;
}
/*后退回调函数*/
int CVICALLBACK Back (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{ char b[100]= {'2'} ;//写入串口的数据
switch (event)
{
case EVENT_COMMIT:
SetCtrlVal(panelHandle,PANEL_String2,b[0]);
//在发送区显示待发送的数据
FlushInQ(chuankou);
ComWrt(chuankou,b,strlen(b));//将数据写入指定串口
break;
}
return 0;
}
/*前进回调函数*/
int CVICALLBACK Go (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
char g[100]= {'1'} ;
switch (event)
{
case EVENT_COMMIT:
SetCtrlVal(panelHandle,PANEL_String2,g[0]);
FlushInQ(chuankou);
ComWrt(chuankou,g,strlen(g));
break;
}
return 0;
}
/*左转回调函数*/
int CVICALLBACK Left (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
char l[100]= {'4'} ;
switch (event)
{
case EVENT_COMMIT:
SetCtrlVal(panelHandle,PANEL_String2,l[0]);
FlushInQ(chuankou);
ComWrt(chuankou,l,strlen(l));
break;
}
return 0;
}
/*右转回调函数*/
int CVICALLBACK Right (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
char r[100]= {'3'};
switch (event)
{
case EVENT_COMMIT:
SetCtrlVal(panelHandle,PANEL_String2,r[0]);
FlushInQ(chuankou);
ComWrt(chuankou,r,strlen(r));
break;
}
return 0;
}
/*暂停回调函数*/
int CVICALLBACK Pause (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
char p[100]= {'5'};
switch (event)
{
case EVENT_COMMIT:
SetCtrlVal(panelHandle,PANEL_String2,p[0]);
FlushInQ(chuankou);
ComWrt(chuankou,p,strlen(p));
break;
}
return 0;
}
/*接收回调函数*/
int CVICALLBACK Timer (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
char readBuf[100]={'0'};
int Strlen;
switch (event)
{
case EVENT_TIMER_TICK:
Strlen=GetInQLen(chuankou);
if(Strlen!=0)
{
ComRd(chuankou,readBuf,Strlen) ;
SetCtrlVal(panelHandle,PANEL_String1,readBuf[0]);
//在接收区显示接收到的数据
}
break;
}
return 0;
}
/*关闭窗口回调函数*/
int CVICALLBACK Close (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);//退出用户界面操作
break;
}
return 0;
}