开启左侧

[HALCON例程] halcon利用socket和运控控制demo通讯的代码

[复制链接]
绝地武士 发表于 2016-12-1 13:26:06 | 显示全部楼层 |阅读模式
  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)
复制代码


记得最后是加一个Socket调试工具进行调试。
链接:http://pan.baidu.com/s/1gfftFzH 密码:h9in

唐豆豆 发表于 2017-1-3 16:34:28 | 显示全部楼层
halcon10版本的是这样,个别的运算符号不一样
  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)
复制代码
Criss 发表于 2017-1-3 17:46:18 | 显示全部楼层
指令的变化,说明halcon也在靠近主流语言的语法,这样更加有利于开发者学习!
wwwbdabc 发表于 2018-1-11 10:20:11 | 显示全部楼层
mark一下
!!!
CSDN阿達 发表于 2022-12-13 14:16:19 | 显示全部楼层
感謝樓主分享
liuchaonuaa 发表于 2023-3-6 15:39:14 | 显示全部楼层
mark一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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