4056|11

60

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

串口通信的处理方法? & 多线程处理? [复制链接]

我的程序需要实现这样的功能。系统由 arm + 51单片机实现。arm做主处理器
1.arm通过串口发送一串字符比如“123456”
2.51单片机接收到这个字符串“123456”后,发送一个相应字符,比如是“5”
3.arm接受到这个“5”后就确认发送成功。否则继续发送字符串“123456”

这个怎么实现?

最新回复

同志们,效率真高。哈哈,谢谢  详情 回复 发表于 2010-1-25 09:31
点赞 关注

回复
举报

61

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
LZ,你已经说的很清楚了,不知道还有什么问题?

按你说的做,基本的串口通讯.
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
问题是我发送完了一后,怎么知道51单片机发没法,什么时候发完了,用什么方法实现啊
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

4
 
今天没用多线程,写了一个,可以实现这个功能,但是一接受主程序就进了死循环了,除非接受到字节。才能执行其他功能。
while(1)
        {
                Sleep(10000);
                if (WaitCommEvent(m_hComm,&evtMask,0))
                {                       
                        SetCommMask(m_hComm, EV_RXCHAR | EV_CTS | EV_DSR );
                       
                        //表示串口收到字符               
                        if (evtMask & EV_RXCHAR)
                        {
                               
                                ClearCommError(m_hComm,&dwReadErrors,&cmState);
                                willReadLen = cmState.cbInQue;
                                if (willReadLen <= 0)
                                {
                                        continue;
                                }
                               
                                readBuf = new BYTE;                               
                                ReadFile(m_hComm, &readBuf, 6, &actualReadLen,0);
                               
                                //如果读取的数据大于0,
                                if (actualReadLen>0)
                                {
                                       
                                        TRACE(L"read success");
                                        break;
                                }
                        }
                }
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
网上找找吧,关于串口通讯的例子一大把

用线程接收是要实现的.还是超时机制.
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
呵呵,把代码格式整理下,让我们看的舒服点嘛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

7
 
串口接收到数据难道就不会触发消息吗?那对应的响应函数是什么
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

8
 
刚看到问题
还以为只是裸机的串口通讯呢
题目的写的不明了
原来是带系统的
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

9
 
对于底层驱动,收到数据会产生中断,至于应用层如何处理就不知道了
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 6 楼 jiereliyi 的回复:
串口接收到数据难道就不会触发消息吗?那对应的响应函数是什么

你单独开一个线程,来监测串口有没有数据送来
主窗口有一个回调函数
由于该回调函数在读线程中工作
所以这里接收到的数据通过Windows消息转发给主窗口

这个消息要由你自己来定义
先定义消息常量
然后添加自定义消息处理函数
之后要记得将消息与函数关联起来
用ON_MESSAGE

最终在主窗口中的自定义消息处理函数来完成对接收数据的处理。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 9 楼 joyzml 的回复:
引用 6 楼 jiereliyi 的回复:
串口接收到数据难道就不会触发消息吗?那对应的响应函数是什么

你单独开一个线程,来监测串口有没有数据送来
主窗口有一个回调函数
由于该回调函数在读线程中工作
所以这里接收到的数据通过Windows消息转发给主窗口

这个消息要由你自己来定义
先定义消息常量
然后添加自定义消息处理函数
之后要记得将消息与函数关联起来
用ON_MESSAGE

最终在主窗口中的自定义消息处理函数来完成对接收数据的处理。


讲解得很详细。
学习了。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

12
 
同志们,效率真高。哈哈,谢谢
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表