如何在C#中收到imei代码后从Teltonika FM1100获取gps nmea数据 [英] How to get gps nmea data from Teltonika FM1100 after receiving imei code in C#

查看:48
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆