多个仪器通过RS232连接到电脑,但无法判断是哪个仪器的数据

cyuer 2008-03-24 01:05:16
多个仪器通过RS232连接到电脑,但无法判断是哪个仪器的数据
是这样,,,我有四个仪器(千分表数显卡尺等,均带数据输出),配有一个四个口的接口转换器,将接口转换器连到电脑上读取四个仪器的数据,,但现在问题是读出数据后无法判断这个数据是哪个仪器发出来的,,
请问这种情况是否可从软件编制上解决,,哪位高手可以相助,,
千元现金酬谢,急...
多谢!
...全文
1216 71 打赏 收藏 转发到动态 举报
写回复
用AI写文章
71 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyuer 2008-03-28
  • 打赏
  • 举报
回复
TO:CommandButton
谢谢,,因为接的有可能都是同样的仪器,所以这种方法好象不可行,
cyuer 2008-03-28
  • 打赏
  • 举报
回复
TO:OF123
多谢.
用您的方法可以读取指定的某个端口的数据,但当某个端口发送数据时,怎样才能知道,我检查了九针的接口,只有三条线,能引发串口事件吗?如果能,那就每个端口读一遍,但是我的仪器只要开着,每个端口的数据都可以发回来的,所以这种方法也不行,除非仪器能告诉我是哪个端口来的数据,,好象只能从硬件上解决问题,,比如设计一个类似抢答器的东西,当发送数据时按一下抢答器,然后我的电脑就知道要读哪个端口的数据,
相当于把仪器发送数据的按键直接连到我的九针接口上,,,不知这样行不行,,如何实现?多谢.
dongdonglikeit 2008-03-28
  • 打赏
  • 举报
回复
我们公司也有一个一拖三的数据转接器 ,厂家提供的软件功能太少我公司想自己做一个,但厂家提供的说明是9600 8 偶 停止位1 连续主动发送,发送ASC码 但我用VB MSCOM 控件收不到数据不知道怎么回事请各位老师指点。
CommandButton 2008-03-27
  • 打赏
  • 举报
回复
先判断MSComm1.Input的长度,长度够了在取回来readin_y1 = MSComm1.Input ,长度不够就不要取
of123 2008-03-27
  • 打赏
  • 举报
回复
实际上你的说明书中说的比较清楚,命令中的 Y 就是端口号。

你的 Multi4 转接器是可以多台(最多 10 台)并行连接到 PC 上,命令参数 X 用来寻址转接器(0 - 9)。
命令中的 Y 就是你所寻址的转接器上的端口号(1 - 4)。你既然发送了端口号,就应该知道发送到那个端口了。

至于那台仪器连接到那个端口,一是你固定一个连接顺序,二是可以在软件界面上让用户登记当前的连接状态。

例,你的命令:
sendout_y(0) = 48 '&H30 = '0' 连接到转接器 0,实际上你只有 1 台
sendout_y(1) = 51 '&H33 = '3' 连接到转接器 Port 3
sendout_y(2) = 63 '&H3F = '?' 测量请求
sendout_y(3) = 13 '&H0D 回车
sendout_y(4) = 10 '&H0A 换行

你只要轮流发送 sendout_y(1) = &H31 ~ &H34 就可以分别连接 Port1 - Port4
cyuer 2008-03-27
  • 打赏
  • 举报
回复
或者成都也行,我们有分部,
cyuer 2008-03-27
  • 打赏
  • 举报
回复
我实在是黔驴技穷了.....

有没有北京的啊,,帮帮忙吧,,我邮箱:berou@163.com ,我会回复你我地址电话等信息,如方便可直接到我公司来,,报酬面议..多谢
嗷嗷叫的老马 2008-03-26
  • 打赏
  • 举报
回复
顶顶.
Paro 2008-03-26
  • 打赏
  • 举报
回复
大力頂上去...
cbm6666 2008-03-26
  • 打赏
  • 举报
回复
呵呵....天才, 理论上可行,利用高低电平,(我可没试过)

不过,这也行不通的,因两组信号有可能同时进来, 你还是要从资料上着手,因为资料是可以判别的,现在是要设法得到你传过来的资料到底长得怎么样的问题.
cyuer 2008-03-26
  • 打赏
  • 举报
回复
我用了一个下载的串口测试软件,只有数据和EER1 或 5,如果按仪器上按钮发送数据软件可自动接收,但是分不出是哪个端口,没有任何标识.
能否在9针的富余端口上加上识别信号..即把四个端口的某根线连到COM1的多余四个端口上,然后再监控这四根线的变化来判断数据是来自哪个端口...
cbm6666 2008-03-25
  • 打赏
  • 举报
回复
让你过来是为了 长期合作

要先搞定你那个国外的, 必需要有详细点的资料, 搞技术的人是不能"大概"或用猜测的, 先把图贴出来吧.
cyuer 2008-03-25
  • 打赏
  • 举报
回复
国产的搞定了,就是这个国外1拖4搞不定,国产虽然简单功能少,但是比较实用
cbm6666 2008-03-25
  • 打赏
  • 举报
回复
你在那里 ? 城市 ? 串口我玩了30年了, 从来没有搞不定的.

你如有兴趣你带着你那台国产的过来我这里, 我免费替你写个代码, 住 免费,其它你自理, 我在浙江永康.
cyuer 2008-03-25
  • 打赏
  • 举报
回复
我想请高手搞个交钥匙工程,但是不知到可行否,如果仪器不好那就白瞎了.我这里经常有客户提出这类的需求,可以长期合作.
shakoe 2008-03-25
  • 打赏
  • 举报
回复
是啊,把你收到的东西贴上来看看

你的代码要是做不到的话,你先用一些串口调试工具接收下数据。

注意用16进制接收,然后分析下数据,要是有XY什么的那不是很简单么!

就是我开始说的每台机器的标识符咯。
cyuer 2008-03-25
  • 打赏
  • 举报
回复
我还编了个1带5的别的仪器,用国产接口卡很好用
cbm6666 2008-03-25
  • 打赏
  • 举报
回复
我晕....你的电脑不是只有用一个串口来接收的吗? 怎么还搞个Comm1 2 3 4 5 ?

在你的代码中应该就只会有一个Mscomm1吧 ?

你能把你接收到的(眼睛看得到的)截个图出来吗 ? 或照着抄出来吗 ?

你这个数据我估计是会接收一长串(包含各个仪器的资料),然后再用每个Port的标志去分割,得到各别端口的数据的.

也有可能就是 X,Y,20个Data,chr(13),chr(10) 为一笔, 这样就好判断多了.

cyuer 2008-03-25
  • 打赏
  • 举报
回复
这个方法还是从某串口书上模仿来的,事件的方法较复杂,还有3条线能有事件触发吗?
深呼吸 2008-03-25
  • 打赏
  • 举报
回复
返回的码中有包含地址的,关于设置方面也讲的很详细,用ASCII码收发.楼主觉得问题是在哪里?
加载更多回复(49)
串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步.

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧