3623|7

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

串口通信中传输数据的问题 [复制链接]

如何,,通过串口给pc端,发送int型的数据,最终pc端接收到的还是int型的数据。

最新回复

不知道你的串口发可以是单片机或PC? SupermanKing的程序还是很实用的。  详情 回复 发表于 2009-6-30 20:09
点赞 关注

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
将int 转成string然后发送
接收端,接收到string后,转成int

直接发int 也可以啊,只是调试的时候不方便用串口调试助手等工具查看
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
用C语言如何写呢?能否举个例子,3Q~
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

4
 
这东西需要啥例子  你发送一个 int的 接受的时候自然也是int的了。
会发char不?和这个一样 或者说类似。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
楼主你把你的要求再具体点点,我们也好答复啊。
 
 
 

回复

99

帖子

0

TA的资源

一粒金砂(初级)

6
 
以下是我刚刚临时写的程序,功能是当下位机收到上位机发来的ASCII码为0x41时,下位机则向上位机发送一个值为32769的Int类型的数字,主要功能函数是 SendIntToPort。硬件环境采用 22.1184MHz 的晶振,通讯频率采用 57600bps 的频率进行通讯,若采用 11.0592 的晶振,可将
PCON = 0x80 来使用,通讯频率同样是 57600bps 的频率。
具体代码如下:

  1. #include
  2. #define RELOAD_COUNT        0xFF        //22.1184MHz,12T,SMOD=0,57600bps
  3. void Initialize_Stoppage(void);
  4. void SendToPort(unsigned char Buf);
  5. void SendIntToPort(unsigned int Buf)

  6. unsigned int SData = 32769;        //要发送的int类型数据
  7. //============================ 主程序 ============================
  8. main()
  9. {
  10.         Initialize_Stoppage();        //初始化串口中断
  11.         while(1);
  12. }
  13. //============================ 串口中断处理 ============================
  14. void COM_Event () interrupt 4
  15. {
  16.         unsigned char dat                =        0;
  17.         if(RI == 1)
  18.         {
  19.                 dat = SBUF;                //接收数据
  20.                 if(dat == 0x41){        //判断上位机发送的是不是一个字符串 "A" 过来
  21.                         SendIntToPort(SData);
  22.                 }
  23.                 RI = 0;
  24.         }else{
  25.                 TI        =        0;
  26.         }
  27. }
  28. //============================ 初始化串口中断 ============================
  29. void Initialize_Stoppage(void)
  30. {
  31.         TMOD        =        0x20;
  32.         PCON        =        0x00;
  33.         SCON        =        0x50;
  34.         TL1        =        RELOAD_COUNT;
  35.         TH1        =        RELOAD_COUNT;
  36.         ES        =        1;
  37.         TR1        =        1;
  38.         EA      =        1;
  39. }
  40. //============================ 发送数据给串口 ============================
  41. void SendToPort(unsigned char Buf)
  42. {
  43.         ES                =        0;                //关串口中断
  44.         TI                =        0;                //清零串口发送完成中断请求标志
  45.         SBUF                =        Buf;                //设置发送数据缓冲区内容
  46.         while(TI == 0);                                //等待发送完成
  47.         TI                =        0;                //清零串口发送完成中断请求标志
  48.         ES                =        1;                //允许串口中断
  49. }
  50. //============================ 发送字符串数据给串口(数据长度最多为255) ============================
  51. void SendIntToPort(unsigned int Buf)
  52. {
  53.         SendToPort(Buf/256);
  54.         SendToPort(Buf%256);
  55. }
复制代码
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
这个问题的关键就在上位机接收程序了,MScomm控件的的输入类型你要设置为:二进制类型,不能是文本类型。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
不知道你的串口发可以是单片机或PC?
SupermanKing的程序还是很实用的。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表