Jak odczytać dane z COM poprzez LUA zaimplementowanego w klienta gry?

0

Witam
Mam urządzenie które jest podłączane do komputera. Odczyt danych jest za pomocą serial portu - np . COM12.
Również mam klienta gry w którym jest zaimplementowany język LUA do pisania modułów w kliencie. Klient gry nazywa się OTClient
Urządzenia tak naprawdę jeszcze nie mam i dopiero u mnie będzie za 2-3tyg.
Ale do rzeczy.
Jak odczytać port COM12 za pomocą LUA? Czy LUA jest w stanie obsłużyć czytanie danych z COM-u?
Jeśli tak to obsłuży to bez dodatkowych bibliotek ? Jeśli dodatkowa biblioteka będą potrzebna to nie będzie problemu aby dodać wymaganą bibliotekę i skompilować OTClienta?
Czy może lepiej jest obsłużyć port COM12 z poziomu C++?

Z jednej strony jeśli to skompiluję do C++ to kod nie będzie aż tak na "wierzchu" i ciężej będzie w nim manipulować bo będzie skompilowany a w przypadku LUA - modułu do gry w którym wartości(pewno równanie ) będzie można podmieniać w notatniku(chyba że zaszyfruję w jakiś sposób).

Może jeszcze inne są "za i przeciw" o których nie wiem.
Pozdrawiam

0

Lua jest popularnym jezykiem embedded
Ma konstrukcję rdzeń języka + moduły
Moduły mają inną implementacją na pececie, inną na urządzeniach, w tym jako biblioteki dynamiczne / linkowane statycznie

Moze mieć moduł do łącza szeregowego, może nie mieć. To zależy

0

@AnyKtokolwiek dzięki za odpowiedź. Według ciebie co będzie lepsze zaprogramować to w LUA (jeśli będzie brakujący moduł to go dodać) czy C++?

0
drzew napisał(a):

@AnyKtokolwiek dzięki za odpowiedź. Według ciebie co będzie lepsze zaprogramować to w LUA (jeśli będzie brakujący moduł to go dodać) czy C++?

Bosch, nawet nie wiadomo, czy to posiada system operacyjny, czy bare metal, proc AVR, STM czy Intela

W 3/4 z tych przypadków, jeśli nie ma przygotowanego interfejsu do dodawania modułów "w terenie", to ich nie dodasz.

0
drzew napisał(a):

Z jednej strony jeśli to skompiluję do C++ to kod nie będzie aż tak na "wierzchu" i ciężej będzie w nim manipulować bo będzie skompilowany a w przypadku LUA - modułu do gry w którym wartości(pewno równanie ) będzie można podmieniać w notatniku(chyba że zaszyfruję w jakiś sposób).

Specyficzne patrzenie kogoś na początku ściezki, zaszyfrować, zabezpieczyć
Kiedyś odszyfrowałem zaszyfrowany skrypt (za hojną fakturę), zajeło pól kubka kawy. Kod w środku miał liczne patologie (naiwne algorytmy) i dlatego sie zawiesił.

0

Odczyt danych z COM12 jest z poziomu PC na Windowsie, urządzanie jest na bazie Arduino.

0
AnyKtokolwiek napisał(a):
drzew napisał(a):

Z jednej strony jeśli to skompiluję do C++ to kod nie będzie aż tak na "wierzchu" i ciężej będzie w nim manipulować bo będzie skompilowany a w przypadku LUA - modułu do gry w którym wartości(pewno równanie ) będzie można podmieniać w notatniku(chyba że zaszyfruję w jakiś sposób).

Specyficzne patrzenie kogoś na początku ściezki, zaszyfrować, zabezpieczyć
Kiedyś odszyfrowałem zaszyfrowany skrypt (za hojną fakturę), zajeło pól kubka kawy. Kod w środku miał liczne patologie (naiwne algorytmy) i dlatego sie zawiesił.

Ah ta mentalność Polaków , ja pytam o czytanie portów a Pan na forum pisze o swojej "specyficznym" patrzeniu co do mojego pomysłu zabezpieczenia algorytmu.
Panie moderator proszę o usunięcie tematu , jednak wolę zagraniczne forum.

0

Hmm, czyli chcesz odczytać z usb -> UART arduino komunikację?
Bo ten COM port nic nie mówi i jest to tylko windowsowe.

z pythona to jest dosyć proste

import serial
ser = serial.Serial("COM12", 9600)
  
ser.write(bytearray('dupa','ASCII'))

print(ser.read())

Gdzie jak to jest połączenie szeregowe UART to musisz baud rate odpowiedni wpisać taki sam jaki masz w urządzeniu np. w arduino ustawisz 9600, to na pc tak samo.

I teraz w lua jak to zrobić to by było, no pod linuxem jest trochę prościej bo system operacyjny mapuje każde urządzenie w /dev/ i otwierasz jak plik i zapisujesz, gdzie konfigurację trochę inaczej się przeprowadza, ale zwykle system pamięta.

Na windowsie możesz tak pierwsza opcja to napisać np. w pythonie komunikację i wywołać z lua ten skrypt.

Druga to robisz serial communication https://www.codeproject.com/Articles/3061/Creating-a-Serial-communication-on-Win
Ale teraz przepisujesz to do lua http://lua-users.org/wiki/SerialCommunication
Nazwy funkcji będą takie same jak z winapi, ale prościej się odnaleźć w C++ kodzie niż lua.

Normalnie jako hardcore programmer czyli jakiś haxior, to iterujesz PCI express busa, znajdujesz busy USB, potem iterujesz po busach USB wyszukując swoje urządzenie, niezależnie od języka programowania musisz skorzystać z syscalli systemowych, na systemie operacyjnym z jakiego korzystasz.

No chyba, że sam sobie drivera napiszesz w kernelu systemu operacyjnego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1