如何在C#中收到imei代码后从Teltonika FM1100获取gps nmea数据 [英] How to get gps nmea data from Teltonika FM1100 after receiving imei code in C#
本文介绍了如何在C#中收到imei代码后从Teltonika FM1100获取gps nmea数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用Teltonika FM1100通过C#.net Tcp Listner程序获取gps数据。因为我已经获得了Imei号码而不是gps nmea数据。根据指示,我在收到imea代码后发送了1个字节的确认数据。但我没有得到任何gps数据。我期待一些帮助来摆脱这个问题。
解决方案
使用系统;
使用 System.Collections.Generic;
使用 System.ComponentModel;
使用 System.Data;
使用 System.Drawing;
使用 System.Linq;
使用 System.Net;
使用 System.Net.Sockets;
使用 System.Text;
使用 System.Threading.Tasks;
使用 System.Windows.Forms;
使用 TcpReceiver;
命名空间 MyServer
{
public 部分 类 Form1:表格
{
public Form1()
{
InitializeComponent();
}
// private TcpReceiver.Receiver obj;
< span class =code-keyword> private 任务t;
private void button1_Click( object sender,EventArgs e)
{
var obj = new Receiver();
// Task.Delay(10000).Wait();
< span class =code-comment> // int port = int.Parse(ConfigurationManager.AppSettings [port]);
t = obj.StartReceiverAsync( 1000 );
/// /// StartReceiverAsync(1000) ;
// TcpListener server = null;
// 尝试
// {
// //在端口13000上设置TcpListener。
// Int32 port = 1000;
// // IPAddress localAddr = IPAddress.Parse(127.0.0.1);
// // TcpListener server = new TcpListener(port);
// server = new TcpListener(IPAddress.Any,port);
// //开始侦听客户请求。
// server.Start();
// //用于读取数据的缓冲区
// 字节[]字节=新字节[1024];
// 字符串数据= null;
// //进入监听循环。
// while(true)
// {
// 控制台。写(等待连接......);
// //执行阻止调用以接受请求。
// //你也可以user server.AcceptSocket()here。
// TcpClient client = server.AcceptTcpClient() ;
// Console.WriteLine(已连接!);
// data = null;
< span class =code-comment> // //获取用于读写的流对象
// NetworkStream stream = client.GetStream();
// int i;
// //循环接收客户端发送的所有数据。
// while((i = stream.Read(bytes,0,bytes.Length))!= 0)
// {
// //将数据字节转换为ASCII字符串。
// data = System.Text.Encoding.ASCII.GetString(bytes,0,i);
// Console.WriteLine(已收到:{0},数据);
// //处理客户发送的数据。
// data = data.ToUpper();
// < span class =code-comment> // byte [] msg = System.Text.Encoding.ASCII.GetBytes(data);
// byte [] msg = new byte [] {0x01};
// //发送回复。
// stream.Write(msg,0,msg.Length);
// // Console.WriteLine(已发送:{0},数据);
// }
// //关闭和结束连接
// client.Close();
// }
// }
// catch(SocketException e1)
// {
// Console.WriteLine(SocketException:{0},e1);
// }
// finally
// {
// //停止侦听新客户。
// server.Stop() ;
// }
// Console.WriteLine(\\\
Hit enter to continue ...);
// Console.Read();
}
// public async Task< List< Task< bool>>> StartReceiverAsync(int port)
// {
// 返回await Task.Factory.StartNew(()=>
// {
// // _portToRun = port;
// //使用此用于局域网的IP。用于公共IP。我们必须选择任何IP。
// // var selfIp = GetSelfIp();
// bool IsStopRequested = false;
// 列表<任务< bool>> taskList = new List< Task< bo ol>>();
// TcpListener listener = new TcpListener(IPAddress.Any ,port);
// listener.Start();
// while(!IsStopRequested)
// {
// Socket client = listener.AcceptSocket();
// // taskList.Add (new ProcessClient()。ProcessAsync(client));
// }
// return taskList;
// });
// }
}
}
使用系统;
使用 System.Collections.Generic;
使用 System.IO;
使用 System.Linq;
使用 System.Net;
使用 System.Net.Sockets;
使用 System.Text;
使用 System.Threading.Tasks;
使用 System.Windows.Forms;
// 使用Parser.nsMain.nsInterface;
< span class =code-keyword> namespace TcpReceiver
{
public class 接收方
{
public bool IsStopRequested {获得跨度>; set ; }
private int _portToRun;
public async 任务<列表<任务< bool>>> StartReceiverAsync( int port)
{
return 等待 Task.Factory.StartNew(()= >
{
_portToRun = port;
// 将此IP用于LAN。用于公共IP。我们必须选择任意IP。
// var selfIp = GetSelfIp();
List< Task< ; bool>> taskList = new 列表<任务< bool>>();
// IPAddress localAddr = IPAddress.Parse(127.0.0.1);
TcpListener listener = new TcpListener(IPAddress.Any,_ portToRun);
li stener.Start();
while (!IsStopRequested)
{
Socket client = listener.AcceptSocket();
taskList.Add(ProcessAsync(client));
}
return taskList;
});
}
内部 async 任务< bool> ProcessAsync(Socket clientSocket)
{
StreamWriter sr = new StreamWriter( < span class =code-string> D:\\AVL \\\\AVL.txt);
bool result = false ;
// IMsg msg = null;
返回 等待 Task.Factory.StartNew(()= >
{
var ns = new NetworkStream(clientSocket);
byte [] buffer = new byte [ 1024 ];
int length;
string total = ;
while ((length = ns.Read(buffer, 0 ,buffer.Length)) > 0 )
{
string msgFromClient =编码。 Default.GetString(buffer.Take(长度).ToArray())修剪();
byte [] msg = new byte [] {0x01};
// 发回回复。
ns.Write(msg,< span class =code-digit> 0 ,msg.Length);
// if(!string.IsNullOrEmpty(msgFromClient))
// {
// < span class =code-comment> msg = Parser.Parser.ParseTheMsg(msgFromClient);
// list.Enqueue(Tuple.Create(msgFromClient,msg));
// WriteRawData();
// sendmsgtocachethroughUPD(msgFromClient,msg);
// }
}
clientSocket.Shutdown(SocketShutdown 。都);
clientSocket.Disconnect( true );
// sr.Close();
return true ;
});
}
// 私有IP地址GetSelfIp()
// {
// < span class =code-comment> //Task.Delay(10000).Wait();
// string hostname = Dns.GetHostName();
// IPHostEntry entry = Dns.GetHostEntry(hostname);
// var ip = entry.AddressList。首先(c => c.AddressFamily == AddressFamily.InterNetwork);
// if(ip == null)
// {
// 抛出新的异常(服务器没有IPv4地址);
// < span class =code-comment>}
// return ip;
// }
}
}
I am using Teltonika FM1100 to get gps data by C#.net Tcp Listner Program. Since I already got Imei number but not gps nmea data. As per instructions, I sent 1 byte acknowledgement data after imea code received. But i didnt get any gps data. I am expecting some help to get out of this problem .
解决方案
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using TcpReceiver; namespace MyServer { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // private TcpReceiver.Receiver obj; private Task t; private void button1_Click(object sender, EventArgs e) { var obj = new Receiver(); //Task.Delay(10000).Wait(); // int port = int.Parse(ConfigurationManager.AppSettings["port"]); t = obj.StartReceiverAsync(1000); ////// StartReceiverAsync(1000); // TcpListener server = null; // try // { // // Set the TcpListener on port 13000. // Int32 port = 1000; // // IPAddress localAddr = IPAddress.Parse("127.0.0.1"); // // TcpListener server = new TcpListener(port); // server = new TcpListener(IPAddress.Any, port); // // Start listening for client requests. // server.Start(); // // Buffer for reading data // Byte[] bytes = new Byte[1024]; // String data = null; // // Enter the listening loop. // while (true) // { // Console.Write("Waiting for a connection... "); // // Perform a blocking call to accept requests. // // You could also user server.AcceptSocket() here. // TcpClient client = server.AcceptTcpClient(); // Console.WriteLine("Connected!"); // data = null; // // Get a stream object for reading and writing // NetworkStream stream = client.GetStream(); // int i; // // Loop to receive all the data sent by the client. // while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) // { // // Translate data bytes to a ASCII string. // data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); // Console.WriteLine("Received: {0}", data); // // Process the data sent by the client. // data = data.ToUpper(); // // byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); // byte[] msg = new byte[] {0x01}; // // Send back a response. // stream.Write(msg, 0, msg.Length); // //Console.WriteLine("Sent: {0}", data); // } // // Shutdown and end connection // client.Close(); // } // } // catch (SocketException e1) // { // Console.WriteLine("SocketException: {0}", e1); // } // finally // { // // Stop listening for new clients. // server.Stop(); // } // Console.WriteLine("\nHit enter to continue..."); // Console.Read(); } //public async Task<List<Task<bool>>> StartReceiverAsync(int port) //{ // return await Task.Factory.StartNew(() => // { // // _portToRun = port; // // use this IP for LAN. for Public IP. We have to choose the Any IP. // //var selfIp = GetSelfIp(); // bool IsStopRequested = false; // List<Task<bool>> taskList = new List<Task<bool>>(); // TcpListener listener = new TcpListener(IPAddress.Any, port); // listener.Start(); // while (!IsStopRequested) // { // Socket client = listener.AcceptSocket(); // // taskList.Add(new ProcessClient().ProcessAsync(client)); // } // return taskList; // }); //} } }
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; //using Parser.nsMain.nsInterface; namespace TcpReceiver { public class Receiver { public bool IsStopRequested { get; set; } private int _portToRun; public async Task<List<Task<bool>>> StartReceiverAsync(int port) { return await Task.Factory.StartNew(() => { _portToRun = port; // use this IP for LAN. for Public IP. We have to choose the Any IP. //var selfIp = GetSelfIp(); List<Task<bool>> taskList = new List<Task<bool>>(); // IPAddress localAddr = IPAddress.Parse("127.0.0.1"); TcpListener listener = new TcpListener(IPAddress.Any, _portToRun); listener.Start(); while (!IsStopRequested) { Socket client = listener.AcceptSocket(); taskList.Add(ProcessAsync(client)); } return taskList; }); } internal async Task<bool> ProcessAsync(Socket clientSocket) { StreamWriter sr = new StreamWriter("D:\\AVL\\AVL.txt"); bool result = false; // IMsg msg = null; return await Task.Factory.StartNew(() => { var ns = new NetworkStream(clientSocket); byte[] buffer = new byte[1024]; int length; string total = ""; while ((length = ns.Read(buffer, 0, buffer.Length)) > 0) { string msgFromClient = Encoding.Default.GetString(buffer.Take(length).ToArray()).Trim(); byte[] msg = new byte[] { 0x01 }; // Send back a response. ns.Write(msg, 0, msg.Length); //if (!string.IsNullOrEmpty(msgFromClient)) //{ // msg = Parser.Parser.ParseTheMsg(msgFromClient); // list.Enqueue(Tuple.Create(msgFromClient, msg)); // WriteRawData(); // sendmsgtocachethroughUPD(msgFromClient, msg); //} } clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Disconnect(true); // sr.Close(); return true; }); } //private IPAddress GetSelfIp() //{ // //Task.Delay(10000).Wait(); // string hostname = Dns.GetHostName(); // IPHostEntry entry = Dns.GetHostEntry(hostname); // var ip = entry.AddressList.First(c => c.AddressFamily == AddressFamily.InterNetwork); // if (ip == null) // { // throw new Exception("No IPv4 address for server"); // } // return ip; //} } }
这篇关于如何在C#中收到imei代码后从Teltonika FM1100获取gps nmea数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文