开启左侧

[HALCON例程] Halcon 13.0 操作TCP实例(服务端和客户端)

[复制链接]
Criss 发表于 2016-12-20 16:20:43 | 显示全部楼层 |阅读模式
本内容提供Halcon编写的服务端和客户端
建议配套SOCKET调试工具一起使用。
链接:http://pan.baidu.com/s/1bpeMZDl 密码:293d

服务器端代码:
  1. * 关闭错误显示
  2. dev_set_check ('~give_error')

  3. * 参数设置
  4. Protocol := 'TCP4'
  5. Timeout := 3.0

  6. * 打开SOCKET 仅用于接受客户端连接
  7. open_socket_accept (7080, ['protocol','timeout'], [Protocol,Timeout], AcceptingSocket)

  8. * 判断协议
  9. tuple_regexp_match (Protocol, 'TCP|HALCON', BaseProtocol)
  10. if (BaseProtocol == 'TCP' or BaseProtocol == 'HALCON')
  11.     dev_error_var (Error, 1)
  12.     OpenStatus := 5
  13.     * 等待客户端连接
  14.     while (OpenStatus != 2)
  15.         socket_accept_connect (AcceptingSocket, 'auto', Socket)
  16.         OpenStatus := Error
  17.     endwhile
  18.    
  19.     *  为当前连接的客户端创建新socket 用于通讯
  20.     set_socket_param (Socket, 'timeout', Timeout)
  21. else
  22.     *
  23.     * UDP sockets 不需要 accept()方法
  24.     Socket := AcceptingSocket
  25. endif

  26. * 获取客户端地址和端口信息
  27. get_socket_param (Socket, 'address_info', Address)
  28. * 获取对方IP和端口信息
  29. if(|Address|=4)
  30.     To:=[]
  31.     To:= [Address[2],Address[3]]
  32. endif

  33. Answer := []
  34. * 数据通讯 发送End字符串结束监听
  35. while (Answer != 'End')
  36.     Format := 'z'
  37.     * 获取客户度发送的消息
  38.     receive_data (Socket, Format, Answer, From)
  39.     if (|Answer|>0)
  40.         Data:='Recv:'+Answer  
  41.         send_data (Socket, Format, Data, To)
  42.     endif
  43.       
  44. endwhile

  45. close_socket (Socket)
  46. close_socket (AcceptingSocket)
复制代码
客户端代码:
  1. * 关闭错误显示
  2. dev_set_check ('~give_error')

  3. * 参数设置
  4. Protocol := 'TCP4'
  5. Timeout := 3.0

  6. * 打开SOCKET 仅用于接连接服务端
  7. open_socket_connect ('localhost', 7080,['protocol','timeout'], [Protocol,Timeout], Socket)

  8. * 获取客户端地址和端口信息
  9. get_socket_param (Socket, 'address_info', Address)
  10. * 获取对方IP和端口信息
  11. if(|Address|=4)
  12.     To:=[]
  13.     To:= [Address[2],Address[3]]
  14. endif

  15. Answer := []
  16. * 数据通讯 发送End字符串结束监听
  17. while (Answer != 'End')
  18.     Format := 'z'
  19.     * 获取客户度发送的消息
  20.     receive_data (Socket, Format, Answer, From)
  21.     if (|Answer|>0)
  22.         Data:='Recv:'+Answer  
  23.         send_data (Socket, Format, Data, To)
  24.     endif
  25.       
  26. endwhile

  27. close_socket (Socket)
复制代码

srtthree 发表于 2017-2-14 16:02:45 | 显示全部楼层
谢谢分享,虽然暂时还用不到,暂时在找串口开发通信的方法,目前只能直接用C#自带的,halcon没有找到
绝地武士 发表于 2017-2-28 20:12:08 | 显示全部楼层
srtthree 发表于 2017-2-14 16:02
谢谢分享,虽然暂时还用不到,暂时在找串口开发通信的方法,目前只能直接用C#自带的,halcon没有找到

串口操作的地址在:https://www.51halcon.com/thread-508-1-1.html
东郭先生 发表于 2017-8-13 11:31:45 | 显示全部楼层
zhuzhzuhzuzhzhzuhzzuhzuhzuzhzuhzhzzuhzuzhu
东郭先生 发表于 2017-8-13 11:31:52 | 显示全部楼层
zhuzhzuhzuzhzhzuhzzuhzuhzuzhzuhzhzzuhzuzhu
shubenhua 发表于 2017-11-1 21:28:30 | 显示全部楼层
ofdgpsdfgkfdgdfsgsdf
godsayyou 发表于 2018-3-28 15:24:33 | 显示全部楼层
多谢分享~~~~~~~~~~~~~~~
liutianyu 发表于 2018-4-8 13:17:56 | 显示全部楼层
谢谢分享,虽然暂时还用不到,在学习初级教程的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表