BG Development


  Reply to this topicStart new topicStart Poll

> Python скрипт имитиращ FMPXXX ustrojstwo, Изпращане на сурови данни по сокет
GigaByte
Публикувано на: 25-02-2024, 05:55
Quote Post



Име: ГБ
Група: Потребител
Ранг: Редовен член

Мнения: 543
Регистриран на: 19.08.09



Здравейте,

Трябва да напиша скрипт на Python, който да имитира FMPXXX устройство и да праща сурови данни към един сървър.

Протоколът е описан тук - https://wiki.teltonika-gps.com/view/Codec#Codec_8_Extended
но въпросът е кой е най лесния начин да изчислявам и записвам байтове с python ?



PMEmail PosterUsers Website
Top
dedal
Публикувано на: 30-12-2024, 17:47
Quote Post



Име: Григор Колев
Група: Потребител
Ранг: Активен

Мнения: 203
Регистриран на: 17.11.10



QUOTE (GigaByte @ 25-02-2024, 05:55)
Здравейте,

Трябва да напиша скрипт на Python, който да имитира FMPXXX устройство и да праща сурови данни към един сървър.

Протоколът е описан тук - https://wiki.teltonika-gps.com/view/Codec#Codec_8_Extended
но въпросът е кой е най лесния начин да изчислявам и записвам байтове с python ?

И очакваш да прочетем протокола и да ти го напишем. Ми а дай нещо и ако не работи да помогнем да си го оправиш
PMEmail Poster
Top
thrawn
Публикувано на: 31-12-2024, 09:43
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3711
Регистриран на: 17.01.17



Въпросът не е бил как да го имплементира а каква структура да използва. Като основа, трябва да е динамичен масив от байтове който да поддържа някаква форма на индексиране за да може лесно да налира (и модифицира) определени байтове.
PMEmail Poster
Top
ici
Публикувано на: 31-12-2024, 11:34
Quote Post


Group Icon
Име: Ивайло Илчев
Група: VIP
Ранг: Почетен член

Мнения: 18726
Регистриран на: 06.06.04



CODE

from ctypes import CDLL, Structure, c_int, c_uint, c_char, \
   POINTER, pointer, c_char_p, c_wchar_p, CFUNCTYPE, \
   addressof, sizeof, memmove

...

class dfuDeviceInfo(Structure):
   #typedef struct dfuDeviceInfo
   #{
   #    char usbIndex[10];                  /**< USB index. */
   #    int busNumber;                      /**< Bus number. */
   #    int addressNumber;                  /**< Address number. */
   #    char productId[100];                /**< Product number. */
   #    char serialNumber[100];             /**< Serial number. */
   #    unsigned int dfuVersion;            /**< DFU version. */
   #}dfuDeviceInfo;
   _fields_ = [
       ("usbIndex",      c_char * 10),  # char usbIndex[10];       /**< USB index. */
       ("busNumber",     c_int),        # int busNumber;           /**< Bus number. */
       ("addressNumber", c_int),        # int addressNumber;       /**< Address number. */
       ("productId",     c_char * 100), # char productId[100];     /**< Product number. */
       ("serialNumber",  c_char * 100), # char serialNumber[100];  /**< Serial number. */
       ("dfuVersion",    c_uint),       # unsigned int dfuVersion; /**< DFU version. */
   ]

...

   dfuList = POINTER(dfuDeviceInfo)()
   num = prog.getDfuDeviceList(pointer(dfuList), 0xdf11, 0x0483)
   for i in range(0, num):
       print(f"{dfuList[i].usbIndex.decode('ascii')},"\
             f"SN:{dfuList[i].serialNumber.decode('ascii')},"\
             f"{dfuList[i].productId.decode('ascii')}")



Това мнение е било редактирано от ici на 31-12-2024, 11:35


--------------------
Ние не сме в една лодка, ние сме в една буря. Лодките са различни.

Следващият път когато се почувстваш ненужен, грозен и недооценен, помни че освен това си и тъп.
PMEmail PosterUsers Website
Top
thrawn
Публикувано на: 31-12-2024, 12:44
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3711
Регистриран на: 17.01.17



Става, но е хубаво да можеш да маркираш определени позиции. Да речем, полетата за дължина на данните. В случая са на точно определени места и позициите могат да се посочат с константи, но все пак... Също така е удачно да имаш индекс за край (размер) на данните.

Между другото, тая карта фиксира ли позициите на ключовете? С други думи, дали при предаване на данните можеш да разчиташ, че ще ги получиш в редът в който са декларирани?

Това мнение е било редактирано от thrawn на 31-12-2024, 12:54
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0