【发布时间】:2015-08-21 10:20:47
【问题描述】:
我正在写 100-255 之间的数字来控制我的齿轮电机的速度。 (低于 100 则无法运行)。
在我的 UDOO 上,我正在运行用 python 编写的 TCP/IP 服务器代码。它绑定服务器地址,然后监听并接受来自客户端的连接。 它执行一个 while 循环,从 TCP/IP 客户端(我的 iPhone)接收数据,然后将其打印并(串行)写入我的 UDOO 上的 Arduino 芯片。 编辑:这是完整的 Python 服务器代码
import socket
import sys
import serial
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('IP', 10000)
print >>sys.stderr, 'starting up on %s port %s' % server_address
sock.bind(server_address)
sock.listen(1)
print >>sys.stderr, 'waiting for a connection...'
connection, client_address = sock.accept()
print >>sys.stderr, 'connection from', client_address
while True:
data = connection.recv(16)
print >>sys.stderr, 'received "%s"' % data
ser.write(data)
我 iPhone 上的 swift 代码使用此命令连接到同一个 IP python 代码正在连接的那个。
NSStream.getStreamsToHostWithName()
加速度计数据使用
写入输出流outputStream.write(string, maxLength: count(string))
如果我将 iPhone 向右倾斜,齿轮马达的速度会增加。
当 accelerometerUpdateInterval = 1 时,减速电机的速度会延迟 1 秒。 python 服务器代码每秒接收 1 个数据包,并且没有传输错误。显示的数字在 100 到 255 之间。
如果我将加速度计的更新间隔设置为 0.01,python 代码每秒接收 100 个数据包。显示的数字示例如下:
received "198"
received "184"
received "179"
received "196"
received "204"
received "2061991871851851"
received "8217717417718118"
received "5185176169184187"
received "1811401761961901"
received "6213912912712612"
received "2118115114105"
received "1051051001001001"
received "0010010110110110"
received "1101101101101101"
received "1011011011011011"
received "0110110110110110"
received "1101101101101101"
received "1011011011011011"
received "0110110110110110"
received "1"
received "1011011011011011"
received "0110110110110110"
received "1101101101101101"
received "101101"
received "101"
received "101"
received "101"
像 198、184、179 这样的数字是准确的,并且可以正确传输,因为这是我拿着 iPhone 的角度。其他大于 3 位或大于 255 的数字不应该显示,也没有编程创建它们的 swift 代码,当它每秒接收 100 个数据包时,TCP/IP 传输肯定有问题。
当更新间隔为 0.1 时仍有一些问题,但频率较低。
【问题讨论】:
-
可能是输出跟不上,将值附加到同一行。
-
是的,类似的。
标签: python swift sockets tcp-ip