📄 wab_uart.c
字号:
#include "windows.h"
#include <cvirte.h>
#include <userint.h>
#include "wab_uart.h"
#include "toolbox.h"
#include <utility.h>
#include <formatio.h>
#include <rs232.h>
#include <string.h>
static int mWindow;
int config_handel;
int portopen;
int baudrate;
int parity;
int data_bits;
int stop_bits;
int com_port;
int config_flag = 1;
int inqlen;
int outqlen;
int inputq;
int outputq;
int portindex;
int RS232Error;
int data_will_rd;
int bytes_read;
int com_status;
char msg[100];
char devicename[30];
char read_data[2000];
char tbox_read_data[2000];
char com_msg[500];
//菜单栏语言选择标志1:中文;2:英语
int language_flag = 1;
//右键菜单栏
static int rc_menubar_handle;
//panel原始大小
int panel_height_original;
int panel_width_original;
//LED control signals
int led_handel;
char led1_flag = 1;
char led2_flag = 1;
char led3_flag = 1;
char led1[] = "led1";
char led2[] = "led2";
char led3[] = "led3";
char ledp[] = "ledp";
char ledoff[] = "ledoff";
char display_message = 1;
void GetConfigParam(void);
void SetConfigParam(void);
void DisplayRS232Error (void);
void RD_ComData(int portNumber, int eventMask, void *callbackdata);
void DisplayComStatus (void);
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((mWindow = LoadPanel (0, "wab_uart.uir", M_WINDOW)) < 0)
return -1;
DisplayPanel (mWindow);
////////////////////////////////////////////////////////////////////
config_handel = LoadPanel (mWindow, "wab_uart.uir", CONFIG);
//InstallPopup (config_handel);
//config_handel = LoadPanel (0, "rs232.uir", CONFIG);
DisplayPanel(config_handel);
//
rc_menubar_handle = LoadMenuBar (config_handel, "wab_uart.uir", R_C_BAR);
SetPanelAttribute (config_handel, ATTR_MENU_BAR_VISIBLE, 0);
//获得原始panel的大小
GetPanelAttribute (mWindow, ATTR_HEIGHT, &panel_height_original);
GetPanelAttribute (mWindow, ATTR_WIDTH, &panel_width_original);
RunUserInterface ();
DiscardPanel (mWindow);
return 0;
}
int CVICALLBACK M_Callback (int panel, int event, void *callbackData,
int eventData1, int eventData2)
{
int panelheight;
int panelwidth;
int virtualkey;
int zoom;
int titlebar;
int handle;
switch (event)
{
case EVENT_GOT_FOCUS:
break;
case EVENT_LOST_FOCUS:
break;
case EVENT_CLOSE:
if (portopen) {
outqlen = GetOutQLen (com_port);
if (outqlen > 0) {
MessagePopup ("RS232 Message", "The output queue has\n"
"data in it. Wait for device to receive\n"
"the data or flush the queue.\n");
break;
}
RS232Error = CloseCom (com_port);
if (RS232Error)
DisplayRS232Error ();
}
QuitUserInterface (0);
break;
case EVENT_PANEL_SIZE:
GetPanelAttribute (mWindow, ATTR_HEIGHT, &panelheight);
GetPanelAttribute (mWindow, ATTR_WIDTH, &panelwidth);
SetCtrlAttribute (mWindow, M_WINDOW_RCV_BOX, ATTR_LEFT, 5);
SetCtrlAttribute (mWindow, M_WINDOW_RCV_BOX, ATTR_TOP, 30);
SetCtrlAttribute (mWindow, M_WINDOW_RCV_BOX, ATTR_HEIGHT, panelheight-35);
SetCtrlAttribute (mWindow, M_WINDOW_RCV_BOX, ATTR_WIDTH, panelwidth-10);
break;
case EVENT_KEYPRESS:
virtualkey = GetKeyPressEventVirtualKey (eventData2);
if (virtualkey == VAL_ESC_VKEY)
{
SetPanelAttribute (mWindow, ATTR_MENU_BAR_VISIBLE, 1);
SetPanelAttribute (mWindow, ATTR_TITLEBAR_VISIBLE, 1);
SetPanelAttribute (mWindow, ATTR_WINDOW_ZOOM, VAL_NO_ZOOM);
SetPanelAttribute (mWindow, ATTR_HEIGHT, panel_height_original);
SetPanelAttribute (mWindow, ATTR_WIDTH, panel_width_original);
SetCtrlAttribute (mWindow, M_WINDOW_RCV_BOX, ATTR_LEFT, 5);
SetCtrlAttribute (mWindow, M_WINDOW_RCV_BOX, ATTR_TOP, 30);
SetCtrlAttribute (mWindow, M_WINDOW_RCV_BOX, ATTR_HEIGHT, panel_height_original-35);
SetCtrlAttribute (mWindow, M_WINDOW_RCV_BOX, ATTR_WIDTH, panel_width_original-10);
}
break;
case EVENT_LEFT_CLICK:
GetPanelAttribute (mWindow, ATTR_TITLEBAR_VISIBLE, &titlebar);
GetPanelAttribute (mWindow, ATTR_WINDOW_ZOOM, &zoom);
if (titlebar == 0 && zoom != VAL_MAXIMIZE)
{
GetPanelAttribute (mWindow, ATTR_SYSTEM_WINDOW_HANDLE, &handle);
ReleaseCapture();
SendMessage ((HWND)handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
}
break;
}
return 0;
}
int CVICALLBACK CON_OK (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
portopen = 0;
GetConfigParam();
DisableBreakOnLibraryErrors ();
RS232Error = OpenComConfig (com_port, devicename, baudrate, parity,
data_bits, stop_bits, inputq, outputq);
EnableBreakOnLibraryErrors ();
if (RS232Error) DisplayRS232Error ();
if (RS232Error == 0) {
portopen = 1;
InstallComCallback (com_port, LWRS_RXCHAR, 0, 0, RD_ComData, 0);
}
DiscardPanel (config_handel);
break;
}
return 0;
}
int CVICALLBACK Con_cancel (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
DiscardPanel(config_handel);
break;
}
return 0;
}
int CVICALLBACK CON_HELP (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
MessagePopup ("RS232 Message" , "This window is used to set you com");
break;
}
return 0;
}
void CVICALLBACK new_connection (int menuBar, int menuItem, void *callbackData,
int panel)
{
}
void CVICALLBACK Disconnect (int menuBar, int menuItem, void *callbackData,
int panel)
{
if (portopen) {
outqlen = GetOutQLen (com_port);
if (outqlen > 0) {
MessagePopup ("RS232 Message", "The output queue has\n"
"data in it. Wait for device to receive\n"
"the data or flush the queue.\n");
return;
}
RS232Error = CloseCom (com_port);
if (RS232Error)
DisplayRS232Error ();
portopen = 0;
}
}
void CVICALLBACK Exit (int menuBar, int menuItem, void *callbackData,
int panel)
{
if (portopen) {
outqlen = GetOutQLen (com_port);
if (outqlen > 0) {
MessagePopup ("RS232 Message", "The output queue has\n"
"data in it. Wait for device to receive\n"
"the data or flush the queue.\n");
return;
}
RS232Error = CloseCom (com_port);
if (RS232Error)
DisplayRS232Error ();
}
QuitUserInterface (0);
}
void CVICALLBACK Copy (int menuBar, int menuItem, void *callbackData,
int panel)
{
}
void CVICALLBACK Paste (int menuBar, int menuItem, void *callbackData,
int panel)
{
}
void CVICALLBACK Clear_screen (int menuBar, int menuItem, void *callbackData,
int panel)
{
ResetTextBox (mWindow,M_WINDOW_RCV_BOX,"\0");
}
void CVICALLBACK Clear_rcv_buffer (int menuBar, int menuItem, void *callbackData,
int panel)
{
}
void CVICALLBACK Clear_xmit_buffer (int menuBar, int menuItem, void *callbackData,
int panel)
{
}
void CVICALLBACK Set_serial_port (int menuBar, int menuItem, void *callbackData,
int panel)
{
config_handel = LoadPanel (mWindow, "wab_uart.uir", CONFIG);
//InstallPopup (config_handel);
//config_handel = LoadPanel (0, "rs232.uir", CONFIG);
DisplayPanel(config_handel);
if(config_flag)
SetConfigParam();
else
config_flag = 1;
}
void CVICALLBACK Get_inqlen (int menuBar, int menuItem, void *callbackData,
int panel)
{
if(portopen == 1) {
inqlen = GetInQLen (com_port);
Fmt (msg, "%s<Input queue length = %i", inqlen);
MessagePopup ("RS232 Message", msg);
} else {
MessagePopup ("RS232 Message" , "The COM didn't open!");
}
}
void CVICALLBACK Get_outqlen (int menuBar, int menuItem, void *callbackData,
int panel)
{
if(portopen == 1) {
outqlen = GetOutQLen (com_port);
Fmt (msg, "%s<Output queue length = %i", outqlen);
MessagePopup ("RS232 Message", msg);
} else {
MessagePopup ("RS232 Message" , "The COM didn't open!");
}
}
void CVICALLBACK Set_window (int menuBar, int menuItem, void *callbackData,
int panel)
{
}
void CVICALLBACK Help_index (int menuBar, int menuItem, void *callbackData,
int panel)
{
char filedir[MAX_PATHNAME_LEN];
char filename[MAX_PATHNAME_LEN];
GetProjectDir (filedir);
filename[0] = '\0';
strcat (filename, filedir);
strcat (filename, "\\sounds.chm");
ShowHtmlHelp (filename, HH_DISPLAY_TOPIC, 0);
}
void CVICALLBACK Help_about (int menuBar, int menuItem, void *callbackData,
int panel)
{
MessagePopup ("RS232 Message" , "This is a test...\n"
"auther:kingyou\n"
"date:09/03/08");
}
void GetConfigParam(void)
{
GetCtrlVal (config_handel,CONFIG_PORT,&com_port);
GetCtrlVal (config_handel,CONFIG_BAUD_RATE,&baudrate);
GetCtrlVal (config_handel,CONFIG_DATA_BITS,&data_bits);
GetCtrlVal (config_handel,CONFIG_PARITY,&parity);
GetCtrlVal (config_handel,CONFIG_STOP_BITS,&stop_bits);
GetCtrlVal (config_handel,CONFIG_INPUTQLEN,&inputq);
GetCtrlVal (config_handel,CONFIG_OUTPUTQLEN,&outputq);
GetCtrlIndex (config_handel, CONFIG_PORT, &portindex);
GetLabelFromIndex (config_handel, CONFIG_PORT, portindex, devicename);
}
void SetConfigParam(void)
{
SetCtrlVal (config_handel,CONFIG_PORT,com_port);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -