» »

Pridobivanje podatkov iz vehicle tracker-ja FM1204

Pridobivanje podatkov iz vehicle tracker-ja FM1204

abyssus ::

Torej, gre za tole zadevo: http://www.teltonika.lt/en/pages/view/?...
Zanima me, kako (na kakšen način) bi pridobival podatke od te zadeve? Vem, da lahko podatke pošiljam preko SMS ali preko GPRS, vendar pa ne vem, kako nastaviš, kam se pošiljajo. Namreč, s tem nisem delal še nikoli in bi potreboval par nasvetov, kako zadevo spravit v pogon. Rad bi postavil en strežnik, na katerem bi laufala podatkovna baza, nato pa bi iz te podatkovne baze prebiral podatke v neko aplikacijo. Ta del ni težava, ne vem edino, kako se dela s tem tracker-jem, da ga spraviš v pogon in da dela to, kar ti želiš.

Torej, rad bi, da mi recimo vsako uro pošlje lokacijo na moj strežnik in ga shrani v bazo. Kako se ga nastavi? Je kdo delal že s tem in mi lahko na kratko opiše? :)

Hvala že vnaprej! :)

llc ::

Če se prav spomnim (že dolgo nisem imel Teltonike v rokah), pride zraven dokumentacija o protokolu, ki ga naprava podpira
ter utility s katerim nastaviš naslov strežnika kamor naj pošilja.

abyssus ::

Danes sem se začel igrati s tem. Preko SMS-ov dela OK, težave pa so sedaj pri pošiljanju podatkov preko GPRS-a.
Zadeva komunicira preko protokola TCP ali UDP. Zato sem želel izdelat svoj TCP strežnik v C#, ampak mi nekako ne uspe.

Moja koda strežnika:

public class Server
    {
        private readonly int _port;
        private TcpListener _tcpListener;
        private Thread _listenThread;
        private readonly IPAddress _hostAddress;

        public Server(string ipAddress, int port)
        {
            _hostAddress = IPAddress.Parse(ipAddress);
            _port = port;
        }

        public Server(int port)
        {
            _hostAddress = GetIPAddress();
            _port = port;
        }

        public void Start()
        {
            _tcpListener = new TcpListener(_hostAddress, _port);
            _listenThread = new Thread(WaitForClient);

            _listenThread.Start();
            
            Console.WriteLine("Server IP: " + _hostAddress.MapToIPv4() + ", Port: " + _port);
            Console.WriteLine("waiting for client to connect...");
        }

        private void WaitForClient()
        {
            _tcpListener.Start();

            while (true)
            {
                var client = _tcpListener.AcceptTcpClient();
                Thread clienThread = new Thread(ClientCommunication);
                clienThread.Start(client);
            }
        }

        private void ClientCommunication(object client)
        {
            Console.WriteLine("client connected. waiting IMEI...");

            TcpClient tcpClient = (TcpClient) client;
            NetworkStream nstream = tcpClient.GetStream();

            byte[] msgBytes = new byte[4096];
            int bytesRead;

            while (true)
            {
                bytesRead = 0;

                try
                {
                    bytesRead = nstream.Read(msgBytes, 0, 4096);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    break;
                }

                if (bytesRead == 0)
                { 
                    Console.WriteLine("client disconnected...");
                    break;
                }

                ASCIIEncoding encoder = new ASCIIEncoding();
                Console.WriteLine(encoder.GetString(msgBytes, 0, bytesRead));
            }

            tcpClient.Close();
        }

        private IPAddress GetIPAddress()
        {
            string hostName = Dns.GetHostName();
            Ping ping = new Ping();
            var replay = ping.Send(hostName);
 
            if (replay.Status == IPStatus.Success)
            {
                return replay.Address;
            }

            return null;
         }
    }


Seveda sem si pomagal z raznimi viri, ker tega nisem delal še nikoli. Tako ne vem, če je server sploh pravilen in delujoč. Kakorkoli, napravico imam nato konfigurirano, da se poveže na IP, ki ga vrne moja metoda GetIPAddress() ter uporabi port, ki sem ga izbral sam, torej 8001. In sedaj bi, po dokumentaciji sodeč, najprej moral prejeti IMEI, nato pa nazaj poslati odgovor, če strežnik želi komunicirat (00) ali če ne želi (01). Jaz bi najprej dobil rad samo IMEI, vendar pa ga ni. Modul naj bi poslal podatke vsakih 10minut.

Poskusil sem tudi s slednjim, že napisanim strežnikom, obljavljenim tukaj http://stackoverflow.com/questions/1489...
Pa je isto, strežnik samo čaka na client-a.

Najbolj me skrbi moj IP, ker ga namreč moja metoda GetIPAddress() vrne drugače, kot ukaz ipconfig ali http://whatismyipaddress.com/. V bistvu dobim v vseh treh primerih drugačen IP. Če recimo nastavim IP svojega strežnika na tega, ki mi ga kaže whatismyipaddress.com, mi strežnik "pade skup" z napako [WinError 10049] The requested address is not valid in its context.

Kaj storiti? Sem sedaj že par ur v tem, pa mi zadeve ne uspe usposobiti :S


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Socket Server

Oddelek: Programiranje
142431 (1624) fx
»

[C#] Client -> Server komunikacija dela, kako je pa z Server -> Client?

Oddelek: Programiranje
51277 (1143) Mitja Bonča
»

[Visual C#] zaradi while zanke se ne pokaže okno

Oddelek: Programiranje
8990 (867) Fresh-Grass
»

c# base class, derived class, inheritance problem

Oddelek: Programiranje
91393 (1272) Vapo1
»

C#; WebClient class; problem z uploadanjem

Oddelek: Programiranje
51421 (1380) 64202

Več podobnih tem