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



我用vb做的串口通讯,用232能通讯到,用485就只能接,发不出?


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


我用vb做的串口通讯,用232能通讯到,用485就只能接,发不出?
发表于:2007-08-13 17:47:11 楼主
private   sub   command1_click()  
dim   out1   as   string  
out1   =   chr(2)   &   "ab03 "   &   chr(3)  
mscomm1.output   =   out1  
end   sub  

private   sub   form_load()  
mscomm1.portopen   =   true  
end   sub  

private   sub   mscomm1_oncomm()  
dim   mz   as   string  
dim   pz   as   string  
dim   jz   as   string  
dim   i   as   integer  
dim   rfrom   as   integer  
dim   rend   as   integer  
dim   strtemp   as   string  
dim   strend   as   string  
if   mscomm1.commevent   =   2   then  
rc   =   mscomm1.input  
rc   =   trim$(rc)  
if   len(rc)   >   12   then  
for   i   =   1   to   len(rc)  
strtemp   =   mid$(rc,   i,   1)  
if   strtemp   =   chr(2)   then  
rfrom   =   i  
end   if  
if   strtemp   =   chr(3)   then  
rend   =   i  
if   rend   >   rfrom   then  
strend   =   mid$(rc,   rfrom,   rend   -   rfrom)  
'rc   =   strconv(rc,   vbunicode)  
mz   =   mid$(rc,   4,   4)  
pz   =   mid$(rc,   8,   3)  
jz   =   mz   &   ". "   &   pz  
label2.caption   =   jz  
end   if  
end   if  
next   i  
end   if  
end   if  
end   sub  
是一个采集地磅数据的程序,用232直接连接可以通讯,采用232转485就不行了,mscomm1.output   =   out1执行后,就没反应了.请高手指教.....
发表于:2007-08-13 20:11:271楼 得分:0
注意rs485属单工,在发时,不能接收.一般应下位机主发,上位机接收.在下位机中注意延迟.
发表于:2007-08-14 02:08:072楼 得分:0
晕,但是下位机必须要接收到上位机发送的这条命令,才会向串口发送过磅数据啊
发表于:2007-08-14 08:51:583楼 得分:0
你用串口调试助手试一试.估计和单双工有关系.
发表于:2007-08-14 09:02:134楼 得分:0
那就说明你的地磅是   rs232   通讯协议。

rs485   协议是一对多通讯,每个命令之前必须先发送从设备地址。这样被选中的设备进入等待命令(ready)状态,其它设备则   idle。而发送地址和命令是要采用不同协议设置的,例如奇偶校验。
发表于:2007-08-14 10:55:095楼 得分:0
谢谢大家的帮助
问题还是出在协议上,485是半双工,通过延时能实现,但控制不好
现在正在试用422了,422全双工应该没问题.


快速检索

最新资讯
热门点击