您的位置:程序门 -> vb -> 基础类



关于vb6串口通信的,请大家指点1,2 谢谢了


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于vb6串口通信的,请大家指点1,2 谢谢了[已结贴,结贴人:icove]
发表于:2007-03-02 20:40:52 楼主
我用vb6写了一个pc机用232转485串口与多个单片机通信实时数据采集的程序.我用循环向单片机发送指令(指令是00bb到1fbb,分别对应地址设为00的单片机到地址设为1f的单片机)。每发一个指令,相应的单片机就做出反应(如:发送00bb,然后地址为00单片机就向pc机发送数据),现在我要做成速度比较快的实时数据采集,请问怎么样向单片机发送数据和接收单片机传上来的数据准确率和效率比较高?怎么样能是cpu资源占用降低点?
    请各位高手给点思路??最好给点vb6的参考代码。谢谢各位了~~
发表于:2007-03-02 20:45:241楼 得分:0
我用的是mscomm
发表于:2007-03-02 21:07:152楼 得分:0
建议:
1)各单片机返回数据字长应固定,以便接收已固定字长接收,即mscomm的属性rthreshold为定值.
2)各单片机返回数据拟以二进制数据返回,小数点不传输,由pc和单片机通信协议约定,可减少字长.
http://community.csdn.net/expert/topic/5366/5366904.xml?temp=2.079409e-02
上述网址有接收二进制数据并处理为16进制显示的代码.
http://community.csdn.net/expert/topic/5365/5365521.xml?temp=.3101923
上述网址有发送二进制数据的代码.
请参阅如下网址本人的答复:  
http://zhidao.baidu.com/question/18050782.html
http://zhidao.baidu.com/question/12535506.html  
http://zhidao.baidu.com/question/12522809.html  
http://zhidao.baidu.com/question/11725744.html  
http://zhidao.baidu.com/question/11040704.html  
http://zhidao.baidu.com/question/10941227.html
发表于:2007-03-02 21:19:543楼 得分:0
没理解到我的意思,怎么样向单片机发送数据和接收单片机传上来的数据准确率和效率比较高?用oncomm事件来接收数据感觉不是很准确哦,而且速度快了就会出错。。。
谁有这方面开发的经验?指点指点八
发表于:2007-03-02 21:22:284楼 得分:0
我向单片机发送1个指令   如00bb,地址为00的单片机就一次向pc机发送16个字节的数据,当单片机数量多了后,怎么样发送数据和接收数据比较好??比如链接有32个单片机的时候
发表于:2007-03-02 22:07:225楼 得分:5
有个问题,你是多个串口发送到每个针对的单片机,还是有个发送,多个接受!

串行通信,速率越低,可靠性越高,越准确,距离越远(俗乎你的程序没必要考虑这些)
你要做的采样速率应该不会比这个高

如果是1托多,强烈建议用低速!因为电平会比较低。。托的太多建议你使用串口服务器,
因为多了直接接你会发现没发工作的!(32个单片机必须要用服务器了)

数据准确率可以通过校验位实现,更多的校验就要自己来做了!

最后说说你说的这个问题,上位机的处理能力完全没问题的!你要做的是在单片机里控制好就可以了,上位机是嵌入式系统的话可以把这些交给串口服务器。。。。。。。。

发表于:2007-03-02 23:19:086楼 得分:0
谢谢指教哦,不过我做的东西没那么复杂。数量也不会达到32个那么多,有没有简单点解决方法吗?
发表于:2007-03-02 23:27:207楼 得分:0
想快,就多用几个串口,好了。
   
————————————————————————————————————
写作,虽然每个人都会查阅辞海,可,不是人人都能写出不朽的篇章的。编程,如是也。
发表于:2007-03-03 08:32:168楼 得分:15
假如你采用9600波特率,每秒理论可作一个巡检周期,但由于timer控件最短周期为55ms,你32个数据返回需2秒完成。timer控件设累加代码来控制地址命令生成:
option   explicit
dim   sj   as   integer
dim   dz   as   integer
private   sub   timer1_timer()
sj   =   sj   +   1
dz   =   sj   -   1
text1   =   right(( "0 "   &   hex(dz)),   2)
if   sj   > =   32   then
sj   =   sj   -   32
end   if
end   sub

单片机返回的数据你用16字节长,估计是地址号带数据的。建议在16字节数据前后各增加1引导符和1结束符,接收代码中加入字长判断及引导和结束符判断,符合要求进入接收数据处理代码。
其它纠错如wangtk(斗士)   所说“数据准确率可以通过校验位实现”。

其它需重点注意的是数据的进制转换。
发表于:2007-03-03 08:52:369楼 得分:0
没做过,帮顶!
发表于:2007-03-21 10:59:4110楼 得分:0
用短信猫做短信平台,比较稳定,不受网络安全影响,响应及时,适合一些重要的安全性高的业务需求,但是发送速度有限制,一般是800条/小时
sp短信通道发送速度快,但是由于接入的开发商很多,在服务器不多的情况下,必然会排队,有时繁忙时提交一条短信,第二天才能收到,而且网络不正常时,也会影响使用
建议一些管理软件用短信猫做短信平台
1.方寸gsm-modem   短信平台

gsm-modem   短信平台,无需联网,只需一台电脑,一个短信猫(或手机),一个短信开发接口,就可轻松建立短信服务器,可实现短信收发,短信互动等功能,一台电脑可以连接多个短信猫硬件,从而提高吞吐量。

2.方寸短信数据库接口(手机短信接口,短信二次开发控件)

通过本数据库接口,能使你现有的系统(如oa、crm、erp等系统)轻松实现无线办公功能,无论你用的是哪种开发语言(vb\vc\vfp\asp\jsp\java\pb\delphi...),只要你的系统能读写数据库即可对接!你仅需要在指定的表中添加记录,本接口程序就自动进行发送短信了,收到的短信会自动保存到数据库里,所以,您不需要了解任何有关数据通信方面的知识,就可实现手机短信的收发等功能!  
电话:0755-25996144
联系人:陈先生
网址:http://www.fcwww.com
qq:393376247
发表于:2007-03-21 13:00:4011楼 得分:0
一般情况下,要求较高速度的,用单片机做一个上位机代替软件轮询,由该上位机通过串口回码给vb,是最合理的.


快速检索

最新资讯
热门点击