12368|42

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

什么问题会造成单片机与pc通讯程序死掉 [复制链接]

  请问各位大侠,什么问题会造成PC机端的VC串口通讯程序死掉了。

这个程序是用VC编的,同时和多个单片机通讯,波特率是57600。

出现的问题是VC程序无规律地死掉,死后用任务管理器都无法关闭。

详细说明请看我在VC板块发的帖子:http://topic.eeworld.net/u/20091021/15/26df4431-5f53-4575-b679-a7b8bc61a1a2.html?seed=1980871625&r=60684939#r_60684939


谢谢大家!

最新回复

你有同样的问题? 看来是个问题  详情 回复 发表于 2009-12-29 17:49
点赞 关注

回复
举报

2

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这个是你PC端的问题

和单片机端没啥联系
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
编程的时候不要什么都按你的想法进行,多考虑每句执行的结果对不对。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 1 楼 lbing7 的回复:
这个是你PC端的问题

和单片机端没啥联系

说的对
请问vc界面是你自己编的吗 ,如果是别人编的你现在有源代码没?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 
我觉得很可能是干扰带来的问题

楼主你用串口调试器看看,把线路接好,是不是一打开串口任务管理器的CPU占用率是不是就是接近100%了?是的话,串口调试器上应该能看到一堆乱码:(
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 
死后用任务管理器都无法关闭。

..........................
关键问题在这里!!!

就算是单片机不停地向PC发送,把缓冲弄得满满的不处理

也只是会卡,程序是可以结束的

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

7
 
1.没有进行异常处理:
  1.1无论上位机还是下位机,单次通信失败最多重复3次。否则退出当前指令。
  1.2对于下位机要注意,因为不可见,最好预留后门,以供测试问题出在哪里。比如,如果通信异常退出。LED提示,正常工作不焊接,异常的时候提供异常分析途径。
  1.3上位机可以做个后门,对于异常的通信事件,专门记录在某个文件中,最好设置默认密码,供内部人员分析异常查看用。
2.良好的商业化的软件,一定要有异常处理机制。因为现实总是不确定的因素太多。
3。维护别人的软件需要勇气,维护自己的软件需要智慧。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

8
 
非常感谢大家的热情帮忙。给我提了很多建议。

程序不是我编的,正想要代码看看。

一开始我在VC板块也说怀疑是干扰的问题,但后来一个现象让我觉得应该不是干扰的问题。就是不接(开)下位机,只运行程序时,是没有问题的。一切正常,并且开了下位机也没有CPU占用100%。

个人比较赞同lbing7的观点,觉得应该是PC端VC程序的问题,但是就上面不开下位机正常这点,又让我觉得可能是VC程序和单片机通讯的时候出问题了。但是不知道是什么问题。

非常感谢duojinian的建议,请问如果通信失败次数多,会造成这样的情况吗?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 
补充:1、CPU占用正常;
      2、通信过程中应该会有多次通信失败的情况。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 
据说多个下位机同时向PC串口发送数据,会产生冲突;请问冲突有可能导致这个现象吗?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

11
 
估计你vc水平不到家,有没有考虑软件编写的 内存释放问题啊 你运行你的写的软件 然后打开资源管理器看看内存是不是在狂飙。有串口方面的问题尽管联系我 邮箱 linsheng_111@163.com
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

12
 
个人觉得波特率有点高。。。。。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

13
 
我们编这个程序的人说,以前用19200,一个串口带一个下位机没问题。现在就只是提高了波特率、一个串口带两个或者三个下位机,就出现了这个问题。很是不解。
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

14
 
波特率应该不高,你可以用串口调试工具在电脑上看看是否接收正常
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

15
 
波特率肯定不高。
建议重点看看窜口处理部分。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

16
 
pc机软件问题,这个不用怀疑,估计是申请了资源没有释放的缘故,pc上串口115200没问题。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

17
 
引用 6 楼 duojinian 的回复:
1.没有进行异常处理:
? 1.1无论上位机还是下位机,单次通信失败最多重复3次。否则退出当前指令。
? 1.2对于下位机要注意,因为不可见,最好预留后门,以供测试问题出在哪里。比如,如果通信异常退出。LED提示,正常工作不焊接,异常的时候提供异常分析途径。
? 1.3上位机可以做个后门,对于异常的通信事件,专门记录在某个文件中,最好设置默认密码,供内部人员分析异常查看用。
2.良好的商业化的软件,一定要有异常处理机制。因为现实总是不确定的因素太多。
3。维护别人的软件需要勇气,维护自己的软件需要智慧。

学习了
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

18
 
因为以前的软件没问题,所以最近怀疑一个串口带多个单片机(下位机),这些下位单片机均接受主机串口发送来的所有数据。不知道这是否有影响。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

19
 
你是怎么同时接上多个串口的啊?是挂在485总线上吗???如果是485的话,一般都是使用的半双工的模式。

如果可以,你可以使用串口工具进行测试,比如上面每个10ms发送命令之类,看串口工具会不会挂,如果不会,说明你的vc程序可能有问题。
另外,将vc的波特率降低,的确也是有很多快速的串口通信会造成缓冲溢出的情况。一步一步的找问题吧~~~
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

20
 
接法是这样的:一块多串口卡出来4个或者8个232串口,然后每个串口通过232->485转换成485信号后,下位单片机并联挂接在485总线上。用的是单工模式,上位应用程序单向给单片机发送数据,不接收信号。

非常感谢,看来得用超级终端试试了。

最近又发现,会出现"0XXXXXXXXX"指令引用的""0X00000000内存,不能为读或者写的问题,以及应用程序错误,需要发送错误报告。不知是否有影响
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

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