LabwindowsCVI上位机通过串口向STM32发送数据程序分享

#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

}


  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值