C#socket通讯4轴雅马哈机器人,客户端接受数据时怎样筛选数据,望各位大佬解惑。 20C

最近在学视觉手眼标定这块,用的C#联合halcon,C#这块不太熟,在网口通讯这块一直不知道怎么把机器人发回的数据解析显示出来,比如我要实时读取机械手坐标,中间可能又要发指令让机械手移动,或要读取机械中的某个变量,我试过用按钮触发一条发送指令,是没问题的,但接收的数据怎么弄就不知道了,数据会不会堵塞,还是应该每发一条指令立即把数据读出来,还望各位大佬解惑。

2个回答

可以使用一个byte[] data存储接收的数据
每次收到的数据放在 byte[] received
数据到达用 data = data.Concat(received).ToArray();
把已经解析过的数据从数组中删除(比如头100个字节不要了)
data = data.Skip(100).ToArray();

weixin_41798189
木子大可 回复arefage: 可以加个联系方式 想和您交流一下四轴机器人的手眼标定问题
8 个月之前 回复
arefage
arefage 能否我加您的微信号,想向你请教这方面的问题
大约一年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复arefage: 可以把数据接收放在工作线程
大约一年之前 回复
arefage
arefage 我用的是C#里的socket组件,怎么知道数据到达了呢,怎么解析呢还有怎么让数据不会堵塞呢
大约一年之前 回复

You have to know some instructions of control robot,
example
1.Set Power On/off send message "@MOTOR ON/OFF\r\n" socket will receive "RUN\r\nEND\r\n"
2.Get Current postion send message "@? WHRXY\r\n" socket will receive "xxxxxxx yyyyyy rrrrrrr zzzzzz" x y r z of number
3.Set jog spedd send message "@MSPEED5\r\n" socket will receive "OK\r\n"
befor example know send message will receive message
if want to use C# socket ,
frist send message use Socket.Send method
second recive message use Socket.Receive method and check end bytes according to message

attention: must set timeout and connnect error
good luck

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问