⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sample5.c

📁 CVI是NI公司推出的基于C语言的强大的虚拟仪器开发平台
💻 C
字号:
#include <rs232.h>
#include <ansi_c.h>
#include <cvirte.h>		/* Needed if linking in external compiler; harmless otherwise */
#include <userint.h>
#include <formatio.h>
#include "sample5.h"

static int panelHandle;
int comselect;
int status;
char info[20],readBuf[20];

int main (int argc, char *argv[])
{
	if (InitCVIRTE (0, argv, 0) == 0)	/* Needed if linking in external compiler; harmless otherwise */
		return -1;	/* out of memory */
	if ((panelHandle = LoadPanel (0, "sample5.uir", PANEL)) < 0)
		return -1;
	DisplayPanel (panelHandle);
	RunUserInterface ();
	return 0;
}

int CVICALLBACK Send (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	int btlselect,jhselect,longselect,stopselect;
	int comvalue,btlvalue,jhvalue,longvalue,stopvalue;
	switch (event)
		{
		case EVENT_COMMIT:
			//选择串行口
			GetCtrlVal(PANEL,PANEL_COMSELECT,&comvalue);
		switch(comvalue)
			{
			case 1:
				comselect=1;
				break;
			case 2:
				comselect=2;
				break;
			}
		//选择波特率
		GetCtrlVal(PANEL,PANEL_BTLSELECT,&btlvalue);
		switch(btlvalue)
			{
			case 1:
				btlselect=1200;
				break;
			case 2:
				btlselect=2400;
				break;
			case 3:
				btlselect=4800;
				break;
			case 4:
				btlselect=9600;
				break;
			case 5:
				btlselect=19200;
				break;
			}
		//选择奇偶校验模式	
		GetCtrlVal(PANEL,PANEL_JYSELECT,&jhvalue);
		switch(jhvalue)
			{
			case 1:
				jhselect=0;
				break;
			case 2:
				jhselect=1;
				break;
			case 3:
				jhselect=2;
				break;
			}
		//选择数据位长度
		GetCtrlVal(PANEL,PANEL_LONGSELECT,&longvalue);
		switch(longvalue)
			{
			case 1:
				longselect=7;
				break;
			case 2:
				longselect=8;
				break;
			case 3:
				longselect=9;
				break;
			}
		//选择停止位
		GetCtrlVal(PANEL,PANEL_STOPSELECT,&stopvalue);
		switch(stopvalue)
			{
			case 1:
				stopselect=1;
				break;
			case 2:
				stopselect=2;
				break;
			}
		//设置和打开串行口
		status=OpenComConfig(comselect,"",btlselect,jhselect,longselect,stopselect,512,512);
		if(status!=0)
			{
			MessagePopup("Error","config failed!");
			return 0;
			}
		SetCTSMode(comselect,LWRS_HWHANDSHAKE_OFF);
		//清空输入和输出缓冲区
		FlushInQ(comselect);
		FlushOutQ(comselect);
		//获取发送信息文本
		GetCtrlVal(PANEL,PANEL_SENDTEXT,info);
		//发送
		status=ComWrt(comselect,info,strlen(info));
		if(status!=strlen(info))
			MessagePopup("Error","Send data failed!");
			break;
		}
	return 0;
}

int CVICALLBACK Recieve (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
		{
		case EVENT_COMMIT:
			//接收
			status=ComRd(comselect,readBuf,strlen(info));
			if(status!=strlen(info))
				{
				MessagePopup("Error","Read data failed!");
				break;
				}
			//将接收信息写入文本框
			SetCtrlVal(PANEL,PANEL_RECIVETEXT,readBuf);
			SetActiveCtrl(PANEL,PANEL_RECIVETEXT);
			break;
		}
	return 0;
}

int CVICALLBACK Quit (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
		{
		case EVENT_COMMIT:
			QuitUserInterface (0);
			break;
		}
	return 0;
}

int CVICALLBACK Clearsend (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
		{
		case EVENT_COMMIT:
			//清空发送文本框
			ResetTextBox(PANEL,PANEL_SENDTEXT,"\0");
			break;
		}
	return 0;
}

int CVICALLBACK Clearrecive (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
		{
		case EVENT_COMMIT:
			//清空接收文本框
			ResetTextBox(PANEL,PANEL_RECIVETEXT,"\0");
			break;
		}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -