首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Teltonika FM4200读取GPS数据

从Teltonika FM4200读取GPS数据
EN

Stack Overflow用户
提问于 2012-11-23 14:37:52
回答 5查看 6.6K关注 0票数 2

我已经在C#中配置了GPS设备并创建了一个监听器应用程序。我只从设备接收IMEI编号,而不接收任何GPS NMEA数据。但为了检查,当我在GPS Gate Server中检查时,它会在地图中显示移动。任何建议!

下面是数据处理的执行方式

代码语言:javascript
复制
TcpClient client = (TcpClient)tcpClient;
Byte[] bytes = new Byte[10000];
String data = null;
int i;

NetworkStream stream = client.GetStream();

while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
{
    data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
}

Console.WriteLine(data);

当它进入while循环时,它只是等待和休眠:(

EN

回答 5

Stack Overflow用户

发布于 2013-07-16 12:39:26

我认为这个设备的模式就像

Step1:接收IMEI号后

Step2:将"01“状态重放到相同的newwork

代码:

代码语言:javascript
复制
TcpClient newClient = (TcpClient)client;

NetworkStream ns = newClient.GetStream()

byte[] bytes = new byte[1024];

bytes = Encoding.ASCII.GetBytes("X");

Console.WriteLine("X");

ns.Write(bytes, 0, bytes.Length);
票数 1
EN

Stack Overflow用户

发布于 2014-02-13 19:02:55

  1. 首先当模块连接到服务器时,模块发送它的IMEI。发送IMEI的方式与编码条形码的方式相同。
  2. 首先标识写入的字节数,然后将IMEI转换为文本(字节)。例如,IMEI 123456789012345将被发送为000F313233343536373839303132333435,
  3. 服务器在收到IMEI后应确定是否接受来自该模块的数据。如果是,服务器将回复模块01,如果不是00。注意确认以二进制包的形式发送,然后
  4. 模块开始发送firstAVL数据包。
  5. 在服务器接收到数据包并对其进行解析后,服务器必须将接收到的数据以整数(四个字节)的形式上报给模块。如果发送的数据编号和服务器上报的数据不匹配,模块重新发送发送的数据。

参考文献:

FMXXXX协议V2.7

票数 1
EN

Stack Overflow用户

发布于 2012-11-23 16:58:34

我认为你需要这样做(简单的解决方案)。如果您可以让它工作,也许您应该检查一些异步套接字/tcp连接

代码语言:javascript
复制
TcpClient client = (TcpClient)tcpClient;
Byte[] bytes = new Byte[10000];
String data = null;
int i;

NetworkStream stream = client.GetStream();

// Will get data as long as data is available after 1st read
do
{
    i = stream.Read(bytes, 0, bytes.Length)
    data = String.Concat(data, System.Text.Encoding.ASCII.GetString(bytes, 0, i));
}
while(stream.DataAvailable); 

// Write the data to console (first time it should be IMEI
Console.WriteLine(data);     

// Write 1 to the stream, note it must probably be byte value 1 -> 0x01
// Flush output stream after writing to prevent buffering

data = "";

// Now try if more data comes in after IMEI and 0x01 reply
do
{
    i = stream.Read(bytes, 0, bytes.Length)
    data = String.Concat(data, System.Text.Encoding.ASCII.GetString(bytes, 0, i));
}
while(stream.DataAvailable);

// Write date to console - move inside the while loop if data keeps coming in
Console.WriteLine(data);     
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13524210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档