原创 Labwindows/cvi8.5学习日志(28)----RS232串口通讯测试程序

2010-6-20 14:20 5710 9 11 分类: 软件与OS

//*********************************************************
// Labwindows/cvi8.5 RS232串口通讯测试程序    
// szlihongtao
// 2010-06-20
//*********************************************************
#include <rs232.h>
#include <ansi_c.h>
#include <cvirte.h> 
#include <userint.h>
#include <formatio.h>
#include "sample5.h"
//*********************************************************
static int panelHandle;
int comselect;
int status;
char info[20],readBuf[20];
//*********************************************************
// 串口设置初始化
// 返回1表示设置成功
// 返回0表示出错
//*********************************************************
unsigned int init_comm(void)
{
 unsigned int btlselect,jhselect,longselect,stopselect;
 unsigned int const arr_baud[]={9600,1200,2400,4800,9600,19200};


 GetCtrlVal(PANEL,PANEL_COMSELECT,&comselect);//选择串行口
 GetCtrlVal(PANEL,PANEL_BTLSELECT,&btlselect);//选择波特率
 btlselect=arr_baud[btlselect];


 GetCtrlVal(PANEL,PANEL_JYSELECT,&jhselect);//选择奇偶校验模式
 GetCtrlVal(PANEL,PANEL_LONGSELECT,&longselect);//选择数据位长度
 GetCtrlVal(PANEL,PANEL_STOPSELECT,&stopselect);//选择停止位


 //设置和打开串行口
 status=OpenComConfig(comselect,"",btlselect,jhselect,longselect,stopselect,32767,32767);


 if(status!=0)
 {
  MessagePopup("Error","config failed!");
  return 0;
 }


 SetCTSMode(comselect,LWRS_HWHANDSHAKE_OFF);
 FlushInQ(comselect);   // 清空输入和输出缓冲区
 FlushOutQ(comselect);
 SetComTime (comselect, 0.3); // 设置串口超时为0.3s


 return 1;
}
//*********************************************************
// 主程序
//*********************************************************
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)
{
 if (event==EVENT_COMMIT)
 {
  status=init_comm();  // 串口设置初始化
  if(status==0)
   return 0;


  GetCtrlVal(PANEL,PANEL_SENDTEXT,info);//获取发送信息文本


  status=ComWrt(comselect,info,strlen(info));//发送
  if(status!=strlen(info))
   MessagePopup("Error","Send data failed!");
 }
 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==0)
   {
    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;
}
//*********************************************************
//*********************************************************
//*********************************************************


 

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户425825 2012-9-6 18:54

不错,有参考价值

用户1585902 2012-7-16 19:20

不错 有一定的参考价值 谢谢
相关推荐阅读
sz_lihongtao 2011-04-20 21:32
32bit无符号数快速开平方根
//*******************************************************************************// 32bit无符号数开平方根// ...
sz_lihongtao 2011-04-20 12:12
STM32学习日志(24)----使用dsp库的FFT函数测相位
attachment download/**  ****************************************************************************...
sz_lihongtao 2011-04-19 14:57
STM32学习日志(23)----使用dsp库的FFT函数.rar
attachment download/**  ****************************************************************************...
sz_lihongtao 2011-04-19 10:39
stm32 dsp lib V2.0
attachment downloadattachment download...
sz_lihongtao 2011-04-19 10:37
STM32学习日志(22)----使用DMA功能自动更新PWM的输出
attachment download/*******************************************************************************编...
sz_lihongtao 2010-09-08 21:59
Labwindows/cvi8.5学习日志(56)----任意波形发生器
//******************************************************************************// Labwindows/cvi8.5...
EE直播间
更多
我要评论
2
9
关闭 站长推荐上一条 /3 下一条