我有一个模块,应该发送GPS定位到我的服务器。下面我描述了模块和服务器之间的通信方式:
我在第二步努力。试过不同的组合,但都没有用。
client.puts('\x01')
client.send([0x01].pack("C"), 0)
client.write["01"].pack('H*')
下面是一个完整的代码示例:
require 'socket'
class ClientThread
def initialize(port)
@server = TCPServer.open(port)
end
def run
puts "Started TCP Server"
loop do
Thread.start(@server.accept) do |client|
2.times do |index|
data = client.recv(8192)
if index == 0
client.send('\x01'.encode('utf-8'), 0) # RESPONSE TO DEVISE THAT SERVER IS READY TO ACCEPT DATA
elsif index == 1
puts self.log("Done! Closing Connection")
client.close
else
client.send('\x00'.encode('utf-8'), 0) # RESPONSE TO DEVISE THAT SERVER IS NOT READY TO ACCEPT DATA
end
end # end of loop twice
end # end of Thread
end # end of infinite loop
end # run method
end # end of class
new_thread = ClientThread.new(65432)
p new_thread.run
设备不理解服务器已准备好接受数据。很可能是因为二进制数据包的格式不正确。您是如何形成响应的,以便设备能够理解如何发送普惠制数据?
如果有什么问题请问我。谢谢。
发布于 2021-12-30 11:14:09
我已设法使它发挥作用。我没有使用client.send('\x01'.encode('utf-8'), 0)
,而是使用了client.puts [0x01].pack("C")
,模块开始发送数据。
下面是Teltonika FMT100的完整工作示例。
接受数据和回复
要求‘套接字’类ClientThread初始化(端口) @server =TCPServer.open(端口) @imei =“未知”结束def日志(Msg)“{Time.now.utc} #{msg}”end def self.log(“已启动的TCP服务器”)循环do Thread.start(@server.accept)如果客户端有2次做索引区开始数据=client.recv(8192次)如果索引== 0 @imei = data self.log(“设备验证了IMEI:#{@imei}") client.puts 0x01.pack("C") elsif索引== 1 p data.unpack('H*').first p self.log(”完成!(关闭连接) client.close else client.puts 0x00.pack("C")结束拯救IOError p self.log(“流已经关闭”)结束#循环的结束#结束两次,p self.log(‘套接字为空’)结束#如果条件结束#线程结束#无限循环的结束end # run方法new_thread = ClientThread.new(65432) p ClientThread.new
你应该得到类似于:
"2021-12-30 11:12:22 UTC Device Authenticated | IMEI: \u0000\u000F357544374597827"
"00000000000004d608130000017dfcc4f8f8000f1753862097342800000000000000f00c05ef00f0011505c800450205b50000b60000422fbb430fc944000002f100006019100009d77a000000017dfcc5f2f8000f1753862097342800000000000000f00c05ef00f0001504c800450205b50000b60000422fbe430fcb44000002f100006019100009d77a000000017dfcce8a30000f1753862097342800000000000000000c05ef00f0001505c800450205b50000b60000422f6a430fbd44000002f100006019100009d77a000000017dfcce8e18000f1753862097342800000000000000f00c05ef00f0011505c800450205b50000b60000422f78430fc244000002f100006019100009d77a000000017dfccf8430000f1753862097342800000000000000f00c05ef00f0001504c800450205b50000b60000422fbd430fcb44000002f100006019100009d77a000000017dfcdbd488000f1753862097342800000000000000000c05ef00f0001504c800450205b50000b60000422fc0430fcb44000002f100006019100009d77a000000017dfcdbd870000f1753862097342800000000000000f00c05ef00f0011504c800450205b50000b60000422fac430fc744000002f100006019100009d77a000000017dfcdcbee8000f1753862097342800000000000000f00c05ef00f0001504c800450205b50000b60000422fb8430fcb44000002f100006019100009d77a000000017dfcddb500000f1753862097342800000000000000f00c05ef00f0011504c800450205b50000b60000422fb5430fcb44000002f100006019100009d77a000000017dfcdebab8000f1753862097342800000000000000f00c05ef00f0001504c800450205b50000b60000422fbe430fca44000002f100006019100009d77a000000017dfced4948000f1753862097342800000000000000000c05ef00f0001504c800450205b50000b60000422fbe430fc644000002f100006019100009d77a000000017dfced4d30000f1753862097342800000000000000f00c05ef00f0011504c800450205b50000b60000422fbf430fc644000002f100006019100009d77a000000017dfcee3790000f1753862097342800000000000000f00c05ef00f0001504c800450205b50000b60000422fc2430fc644000002f100006019100009d77a000000017dfcefd5a0000f1753862097342800000000000000f00c05ef00f0011504c800450205b50000b60000422fbe430fc644000002f100006019100009d77a000000017dfcf13918000f1753862097342800000000000000f00c05ef00f0001504c800450205b50000b60000422fc1430fc644000002f100006019100009d77a000000017dfcf2b7e8000f1753862097342800000000000000f00c05ef00f0011504c800450205b50000b60000422fb7430fc644000002f100006019100009d77a000000017dfcf3a630000f1753862097342800000000000000f00c05ef00f0001504c800450205b50000b60000422fb8430fc644000002f100006019100009d77a000000017dfd2aac20000f1753862097342800000000000000000c05ef00f0001504c800450205b50000b60000422fa0430fcb44000002f100006019100009d77a000000017dfd61b210000f1753862097342800000000000000000c05ef00f0001504c800450205b50000b60000422f9b430fcb44000002f100006019100009d77a00130000b8e0"
"2021-12-30 11:12:24 UTC Done! Closing Connection"
https://stackoverflow.com/questions/70497059
复制相似问题