Egy roppant egyszerű relé panelt kellene vezérelnem, soros porton, binárisan. Ha "minicom" -mal állítom be a portot, akkor működik (19200 Baud, 8 bit, nincs paritás és egy stop bit). Ha az stty -t használom akkor, valamiért lenyeli az utolsó karaktert (egy wines gépen, binterm programocskával nézem a kimenetet):
$stty -F /ev/ttyS1 19200 cs8 -parenb -cstopb
# a küldés így néz ki
$echo -en "\x01\x02\x03\x04" > /dev/ttyS1
# ezt kapom: x01 x02 x03
# ha "megnyújtom"
$echo -en "\x01\x02\x03\x04\xFF" > /dev/ttyS1
# ezt kapom: x01 x02 x03 x04
Mit kellene még beállítani?
- 8299 megtekintés
Hozzászólások
A Wines terminal emulatorban a sorvegjelet Unixosra, vagy a Linuxon Winesre.
DOS-on a sorvegjel \x0D\x0A, a Unixos csak \x0A. Elkepzelheto, hogy ha rosszul van beallitva, a fogado levagja a \x0A elottit akkor is, ha az nem \x0D.
--
The programmers of tomorrow are the wizards of the future. You know, you're going to look like you have magic powers compared to everybody else. -Gabe Newell
- A hozzászóláshoz be kell jelentkezni
A BinTerm NEM foglalkozik ilyennel - amit kap kiteszi, nem vár semmilyen sorvégre.
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Ez egyre érdekesebb!
Először a "házi szerveremen" próbálkoztam. Ott egy a "Brainboxes" által forgalmazott BB16PCI958 chip csinál 4 soros portot, ami (valahol találtam a neten) 16750 -es UART -nak van fel állítva (setserial -g) - jelenleg egy portja van használatban - FAX modem - jól működik :) Az lspci kimenete "Multiport serial controller: Brain Boxes Device 0d21 (rev 01)".
Most "átnyergeltem" a munkaállomásomon feltelepített 2 portos cuccra, ami 166550A UART -nak van felkonfigurálva (setserial -g) - lspci kimenete "Serial Controller: Timedia Technology Co Ltd PCI25550 (Dual 16550 UART) (rev 01).
Ez nem csinálja ezt a hibát, ugyanezekkel a beállításokkal.
Ahova készül az - lspci: "Serial controller: NetMos Technology PCI 9835 Multi-I/O Controller (rev 01)" és UART 16550A -nak van felhúzva.
Úgy tűnik, nem a port beállításokkal van a gond, hanem a driverrel?
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Még valami. Nem tudtok valami netcat jellegű programról, a soros port számára?
(ad/vesz és paraméterez)
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
cu (Van ahol a UUCP csomag része, van ahol önálló - ha jól rémlik.)
Bár nem tudom mit értesz paraméterez alatt.
- A hozzászóláshoz be kell jelentkezni
Paraméterez alatt: Baudrate, bitek száma, stop bitek száma, paritás, nem canonical (bináris ez aszutyok és nincs CR/LF a végén stb.)
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
ckermit, minicom. De bizonyosokat a cu is megcsinál és az általad is piszkált stty-nal együtt már elégnek kell lennie.
- A hozzászóláshoz be kell jelentkezni
Egyszer csak megjavult :( Azaz most már kimegy mind a négy bájt - mondjuk többször kiadtam az stty parancsot.
$stty -F /dev/ttyS1 19200 cs8 -parenb -cstopb raw
Így most nem igazán tudom, mitől is javult meg?
Viszont a vétel nem áll össze :(
$od -x < /dev/ttyS1
A BinTerm egy olyan kis progi amivel egy másik gép két soros portját használva, megnézheted mind az adás mind a vételi oldalt. Az "od -x" köszönő viszonyban sincs a válaszokkal - szintén 4 bájt - helyette 8x2 bájt hexa (pl. 01f7 ami valójában FD 01 01 FD).
Mi van?
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Született egy megoldás. Arra lettem figyelmes, ha a minicom -mal nézek rá a cuccra akkor jó! Ha az én inicializációmat használom, akkor csúszik szét - szóval én állítok valamit rosszul.
Mivel a minicom jól állítja be, ha utána Quit -ek (és nem resetelek, akkor működik a dolog - ezt az állapotot rögzítem az "stty -g -F /dev/ttySx" parancsal, majd ezt visszatáplálom:
SETUP_DEV=1:0:8bd:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
/bin/stty $SETUP_DEV -F $CTRL_DEV
És így már konzekvensen szépen kiadja a négy bájtomat:
bin/echo -en "\x01\x01\x00\x00" > $CTRL_DEV
Persze, az ssty -a kapcsolójával "human readable" formátumot kapok, de nincs most kedvem ezt dekódolni.
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Milyen relé panelt használsz?
- A hozzászóláshoz be kell jelentkezni
Conrad 8 csatornás - négy bájtokat kommunikál.
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Ez azért valójában nincs megoldva ám...:-)
A workaround az nem megoldás csak megkerülés!
- A hozzászóláshoz be kell jelentkezni
Arra gondolsz, hogy fejtsem vissza az stty által kiadott beállításokat?
Megnézheted ASCII -ban is "-a" kapcsoló.
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni