Jak na porty ve woknech?
Moderátor: Moderátoři
Jak na porty ve woknech?
Kdysi jsem si napsal v basicu prográmek co komunikoval po sériovém portu s vnějším zařízením a ze získaných dat kreslil na displej graf. Pro informaci kus programu:
1 clear
2 screen 9
6 gosub 1000
10 DIM A$(5)
15 rem - u programu v notebooku je potreba v nasledujicim prikazu zadat COM1
20 OPEN "COM1:9600,s,8,1,ds0" AS #1
30 CLS
35 rem
40 gosub 4000: rem precte a zahodi prvni cteni-muze byt neuplne
45 gosub 4000: IF MID$(Z$,4,1)<>"0" THEN GOTO 45: rem ceka na prvni slovo
50 FLAG=1:rem prvni platne slovo se pouzije
60 FOR N=1 TO 5
70 rem LOCATE 3,1:PRINT N
80 IF FLAG=1 THEN FLAG=0:GOTO 100
.....
4000 rem fl=0: on com(1) gosub 4500
4010 rem if fl=0 then print "Neprisla data":beep
4020 rem return
4500 line input #1,Z$: rem cte seriovy port
4510 rem fl=1
4520 return
......
Teď jsem si vzpomněl že by se mi mohl hodit, sice jsem jej (pod W XP) spustil, ale do komunikace se mi něco plete, asi wokna, takže program něco přečte a pak zgabne.
Tak by se mi docela hodilo kdyby existovalo něco na podobné pokusy pod woknama - jednoduchého abych to dokázal zvládnout a pokud možno free.
1 clear
2 screen 9
6 gosub 1000
10 DIM A$(5)
15 rem - u programu v notebooku je potreba v nasledujicim prikazu zadat COM1
20 OPEN "COM1:9600,s,8,1,ds0" AS #1
30 CLS
35 rem
40 gosub 4000: rem precte a zahodi prvni cteni-muze byt neuplne
45 gosub 4000: IF MID$(Z$,4,1)<>"0" THEN GOTO 45: rem ceka na prvni slovo
50 FLAG=1:rem prvni platne slovo se pouzije
60 FOR N=1 TO 5
70 rem LOCATE 3,1:PRINT N
80 IF FLAG=1 THEN FLAG=0:GOTO 100
.....
4000 rem fl=0: on com(1) gosub 4500
4010 rem if fl=0 then print "Neprisla data":beep
4020 rem return
4500 line input #1,Z$: rem cte seriovy port
4510 rem fl=1
4520 return
......
Teď jsem si vzpomněl že by se mi mohl hodit, sice jsem jej (pod W XP) spustil, ale do komunikace se mi něco plete, asi wokna, takže program něco přečte a pak zgabne.
Tak by se mi docela hodilo kdyby existovalo něco na podobné pokusy pod woknama - jednoduchého abych to dokázal zvládnout a pokud možno free.
Problém je v tom, že to Basic dělal v real-modu pomocí přerušení biosu, nebo možná i přímo pomocí IO a přerušení od RS232, ale na takovou úroveň tě NT z userspace nikdy nepustí, buď si musíš napsat přímo ovladač pro rs232 a komunikovat s ním pomocí vlastního api, a nebo použít nativní WIN api, které není zase o tolik složitější než příklad v Basicu viz. http://www.ebastlirna.cz/modules.php?na ... ht=win+api
Této problematice rozumím velice málo, ale když používám prográmky na ovládání displejů přes LPT & COM pod W-XP, tak je potřeba mít naistalovaný port driver. Bez tohoto komunikace prostě nefunguje. Koukni sem, třeba ti něco pomůže...
Malá připomínka - uživatelé, když vidí okno s černým pozadím, tak tomu říkají "DOS" okno. Ovšem skutečné DOS okno to bude jen v případě, že se spustí 16 bitový program pro MS DOS. Jinak to okno není "DOS" okno, ale konsolové okno, a aplikace běžící v konsolovém okně je plnohodnotná 32 bitová aplikace s přístupem celou paměť, COMy, sockety a podobně. Jenom nemá utvořené grafické okno.