cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 2482|回复: 3

关于串口通信的一问题

[复制链接]
发表于 2006-5-19 02:06:57 | 显示全部楼层 |阅读模式
在串口通讯时,自发自收,程序编译通过可以运行,但接收不到数据,是不是还要对串口作些设置
[此贴子已经被作者于2006-5-18 19:39:50编辑过]

发表于 2006-5-19 18:33:54 | 显示全部楼层
你对它装了事件了吗兄弟?installcomcallback,函数大概是这样子的!你可以看看CVI的例子,上面有的!
发表于 2006-5-21 03:30:39 | 显示全部楼层
<>我先问一下,你的计算机的COM口有没有短接!如果没有,当然收不到.</P>
<>若有可以试着这样</P>
<>1 申请一个字符变量并给它付值,然后打开串口,把刚才变量里的数据发出去.如下</P>
<P>//            comport         ——串口号 ;<BR>//            senddata        ----自付变量</P>
<P>OpenComConfig (comport, "",9600,3, 8, 2, 1000, 1000);  <BR>FlushOutQ(comport);  <BR>ComWrt(comport,senddata,3);//向串口写数据</P>
<P>2 从串口读数据</P>
<P> ComRed();</P>
[em01][em01][em01][em01][em01][em01]
 楼主| 发表于 2006-5-21 04:36:01 | 显示全部楼层
<>我在做串口通讯,自发自收一个程序,程序编译通过没有问题,并已将25针的串口2和3角用导线短接(还要不要其它的处理),但是接收不到数据,发送程序如下:</P>
<><FONT size=2>static float b[48];     /*要发送的实型数组*/ <BR>int CVICALLBACK Send (int panel, int control, int event,<BR>  void *callbackData, int eventData1, int eventData2)<BR>{   char c[48][9]; <BR>    char com[10]={"COM1"};<BR>    char *buf;  <BR> int size,j,k,n=0;<BR> int status;<BR> switch (event)<BR>  {<BR>  case EVENT_COMMIT:<BR>  buf=malloc(1000) ;<BR>  for(j=0;j&lt;=47;j++)<BR>     b[j]=2;  /*给数组变量赋值*/ <BR>  for(j=0;j&lt;=47;j++)<BR>     sprintf(c[j],"%6.2f",b[j]);  /*将实型数据转化为字符型数据*/<BR>     for(j=0;j&lt;=47;j++)     <BR>     { for(k=0;k&lt;=8;k++)<BR>       buf[n]=c[j][k],n++;}   /*将二维字符数组转化为一维  */<BR>    size=strlen(buf);<BR>    status=OpenComConfig( 1,com,9600,0,8,1,1000,1000);/*发送*/<BR>           if(status!=0)<BR>          {MessagePopup("Error","config failed!");<BR>           return 0;}<BR>  SetCTSMode(1,LWRS_HWHANDSHAKE_OFF);<BR>  FlushOutQ(1);  <BR>                FlushInQ(1);  <BR>         status=ComWrt(1,buf,size);  <BR>  if( status!=size)<BR>                MessagePopup("Error","send data failed!");</FONT></P>
<><FONT size=2>  while(1)<BR>  {   size=GetOutQLen(1);<BR>      if(size==0)<BR>         break;}<BR>  CloseCom(1);<BR>  QuitUserInterface(0);  <BR>            break;<BR>  }<BR> return 0;<BR>}<BR></FONT><FONT size=3>接收如下:</FONT></P>
<P><FONT size=2>static float e[48];<BR>int CVICALLBACK Start (int panel, int control, int event,<BR>  void *callbackData, int eventData1, int eventData2)<BR>{   <BR>    char com[10]={"COM1" };<BR>    char cuf[1000];<BR>    char buf[10];<BR>    int j,k,n=0;<BR>    int size;<BR>    int status;<BR>        <BR>            switch (event)<BR>  {<BR>  case EVENT_COMMIT:<BR>  <BR>  status=OpenComConfig(1,com,9600,0,8,1,1000,1000);<BR>         if(status!=0)<BR>                {MessagePopup("Error","config failed!");<BR>                 return 0;}                                         /*打开串口*/<BR>  SetCTSMode(1,LWRS_HWHANDSHAKE_OFF);<BR>  size=GetInQLen(1);<BR>  status=ComRd(1,cuf,size);     /*读取串口字符数据*/ <BR>                if( status!=size)<BR>                MessagePopup("Error","send data failed!");<BR>  CloseCom(1);     <BR> <BR>  for(j=0;j&lt;=47;j++)       /*将字符串数据转化为实型数据*/<BR>  {for(k=0;k&lt;=8;k++)<BR>   d[k]=cuf[n],n++;<BR>                 e[j]=atof(d);}    </FONT></P>
<P><FONT size=2>不知哪位高手可以指点一下,我为什么收不到数据. </FONT></P>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-5-6 05:05 , Processed in 0.904364 second(s), 7 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表