回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图将python程序转换为D;该程序用于发送<a href="http://en.wikipedia.org/wiki/Art-Net" rel="nofollow">Art-Net</a>DMX包。在</p>
<p>Python:</p>
<pre><code>import sys, socket, math, time
from ctypes import *
class ArtNetDMXOut(LittleEndianStructure):
PORT = 0x1936
_fields_ = [("id", c_char * 8),
("opcode", c_ushort),
("protverh", c_ubyte),
("protver", c_ubyte),
("sequence", c_ubyte),
("physical", c_ubyte),
("universe", c_ushort),
("lengthhi", c_ubyte),
("length", c_ubyte),
("payload", c_ubyte * 512)]
def __init__(self):
self.id = b"Art-Net"
self.opcode = 0x5000
self.protver = 14
self.universe = 0
self.lengthhi = 2
def main():
hostIP = "localhost"
S = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
packet = ArtNetDMXOut()
packet.payload[0] = 255
S.sendto(packet, (hostIP, ArtNetDMXOut.PORT))
if __name__ == "__main__":
main()
</code></pre>
<p>D:</p>
^{pr2}$
<p>我的Python代码完全按照预期工作,但是在D中,<code>s.send(packet);</code>行出现了错误<code>function std.socket.Socket.send (const(void)[] buf, SocketFlags flags) is not callable using argument types (ArtNetDMX)</code>。在</p>
<p>我正确地处理这个问题吗?我做错什么了?在</p>