python socket发送组播数据_将UDP组播信号导入Python

我正在尝试将UDP多播信号(EEG信号)导入Python。虽然我确实得到了一个信号,但是输出是由一系列字母、数字和符号组成的,它们不能正确显示,所以有些地方不太正确。在

我现在的代码是:import socket

import struct

MCAST_GRP = '234.5.6.7'

MCAST_PORT = 58432

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)

sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

sock.bind(('', MCAST_PORT))

mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)

sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

while True:

print sock.recv(51)

现在,最后一行(打印短袜收银机(51))似乎指示Python将接收缓冲区的内容输出为ASCII字符串。我被告知必须将缓冲区数据转换为字节数组,然后从数组中获取所需的元素。

例如,我有一个51个元素的数组,我想知道通道5上的电压,然后从数组中得到元素18(高字节)和19(低字节),并将它们转换成一个短整数(16位值)。

我被告知我可以使用Python的解包结构函数:https://docs.python.org/3.0/library/struct.html。在

我自己只有基本的Python编程技能,所以所有这些对我来说都是一个新领域。在阅读了文档之后,我觉得解包结构函数需要两个参数。第一个指定了数据的打包方式。在我的例子中,这是“4sl”;我将四个字符后跟一个长整数写入字节向量。第二个参数必须声明哪些数据必须被解包。使用解包结构(“4sl”,短袜收银机(51)返回错误消息“unpack需要长度为8的字符串参数”。这很有道理短袜收银机(51)只给我接收缓冲区的实时内容,它远远超过了这个长度。我必须承认我有点不知所措。如果有人能帮我,我会非常感激的。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值