Řešení potíží společný jazyk QuickBasic komunikační Port

Prohlášení o odmítnutí odpovědnosti pro už nepodporovaný obsah KB

Tento článek byl napsán pro produkty, ke kterým již Microsoft nadále nenabízí podporu. Článek je tedy poskytován „tak, jak je“ a nebude už nadále aktualizován.

Souhrn

Tento článek pojednává o pomoc při řešení potíží pomocí sériové komunikace v Microsoft QuickBasic verze 4.0, 4.0b a 4.5, v základní kompilátoru Microsoft verze 6.0 a 6.0b pro MS-DOS a MS OS/2 a v Microsoft základní Professional rozvoj systému (PDS) verze 7.0 a 7.1.


Tento článek dává příkaz OPEN COM vzorku, který by měly fungovat správně. Další komunikace, Poradce při potížích s tipy jsou také uvedeny. Souvisejícím článku naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
39386 vysvětleních chybových zpráv při použití COM1: a COM2:

Další informace

Pokud máte problémy s použitím "COM1:" nebo "port COM2:", zkuste následující příkaz OPEN, takže Basic jako chybám jako možné problémy související s hardwarem:
OTEVŘÍT "COM1:300, N, 8, 1, PŘIHRÁDKY, CD0, CS0, DS0, OP0, RS, TB2048, RB2048" JAKO #1
(Tuto, OTEVŘETE je pro NÁHODNÝ přístup). Následuje vysvětlení každé doporučené použitým v tomto příkazu OPEN:


  1. Čím vyšší přenosovou rychlost, tím větší šance problémy; 300 přenosovou je tedy nepravděpodobné, že vám potíže. 2400 přenosovou nejvyšší možnou rychlost je většina telefonních linkách, kvůli jejich omezenou schopností vysokofrekvenční. 19 200 Bd vyžaduje drátu přímé připojení, je pravděpodobně způsobit problémy. (Jsou možné přenosové rychlosti pro jazyk QuickBasic 75, 110, 150, 300, 600, 1200, 1800, 2400, 4800, 9600 a 19 200.)
  2. Parity obvykle není pomohl při výrazně; z tohoto důvodu doporučujeme bez parity (N).


    Pro zařízení vyžadující parity měli použít možnost PE (Povolit Parity) v příkazu OPEN COM, které je nutné zapnout kontrolu parity. Pokud možnost PE zapne kontrolu parity, "zařízení I/O chyba" nastane, pokud dva programy komunikující mít dvě různé paritě. (Parity může být dokonce, liché, None, místo nebo označit). Například "zařízení I/O chyba" dochází při vzájemné komunikaci přes sériový řádek pomocí následující dva různé příkazy OPEN COM dva programy:
          OPEN "COM1:1200,O,7,2,PE" FOR RANDOM AS #1
    a
          OPEN "COM2:1200,E,7,2,PE" FOR RANDOM AS #2
    Pokud možnost PE je odebrán z výše uvedené příkazy OPEN COM, žádná chybová zpráva se zobrazí.
  3. Výše uvedený příklad používá 8 datových bitů a 1 stop-bit. Osm datových bitů vyžaduje bez parity (N), z důvodu omezení velikosti pro Basic komunikace dat rámce (10 bitů).
  4. Výchozí je BIN (binární režim). Poznámka: Možnost ASC nepodporuje protokol XON/XOFF a bez zvláštní zpracování jsou předány znaků XON a XOFF.
  5. Ignorování hardwarová metoda handshaking často řeší mnoho problémů. Proto pokud aplikace nevyžaduje metoda handshaking, doporučujeme vypnout následující hardware řádku kontrola:
    CD0 = off časového limitu pro řádek dat dopravce zjistit (DCD) zapne
    CS0 = zapne off časového limitu pro řádek vymazat k odeslání (CTS)
    DS0 = zapne off časového limitu pro řádek připravena DSR (Data Set)
    OP0 = zapne off časového limitu pro úspěšné OPEN
  6. RS potlačí zjišťování z požadavku RTS (To Send).
  7. Vyrovnávací paměti související problémy pokuste se zvýšit přenosové a přijímání velikosti vyrovnávací paměti nad výchozí 512 bajtů:
    TB2048 = zvýšení velikosti vyrovnávací paměti odesílání na 2048 bajtů
    RB2048 = zvýšení velikosti vyrovnávací paměti pro příjem na 2048 bajtů.
    Větší vyrovnávací paměť příjem můžete obejít základní zpoždění způsobeno příkazy jako MALOVÁNÍ, které intenzivně použít procesoru.
Další důležité tipy pro řešení potíží s komunikací jsou následující:


  1. Používejte funkci INPUT$(x) ve spojení s funkcí LOC(n) přijímat všechny vstup z komunikační zařízení (kde "x" je počet znaků vrácených LOC(n), což je počet znaků ve vstupní frontě čekání ke čtení. "n" je číslo souboru, které jste otevřeli pro "COM1:" nebo "port COM2:").


    Vyhněte se použití příkazu INPUT #n na vstup z komunikační port, protože vstup #n čeká (ASCII 13) znakem návratu.


    Vyhněte se použití příkazu GET #n pro komunikaci, protože GET #n čeká vyplnění vyrovnávací paměti (a může pak dojít k přetečení vyrovnávací paměti).


    Také Vyhněte se použití příkazu PUT #n pro komunikaci a místo toho použít příkaz Tisk #n. Příkaz odešle v jazyk QuickBasic 4.0b a 4.5, v základní kompilátoru 6.0 a 6.0b a základní PDS 7.0 a 7.1, PUT #n,, x$ pomocí syntaxe pro odeslání řetězec proměnné délky proměnné jako třetí argument PUT #n extra 2 bajty, obsahuje délku řetězce před konkrétní řetězec. Tyto 2 délka bajtů odeslaných na port COM může zmást přijímající aplikace, pokud nejsou určeny k jejich zpracování. Žádné bajty délky jsou odesílány s PUT #n,, x$ v jazyk QuickBasic 4.0. (Jazyk QuickBasic verze starší než 4.0 není nabízejí funkce jako třetí argument příkazu PUT #n proměnné.)
  2. Příkladem datovou komunikaci naleznete v TERMINÁLU. BAS ukázkový program, který je na disku vydání pro jazyk QuickBasic verze 4.0, 4.0b a 4.5, základní kompilátoru Microsoft verze 6.0 a 6.0b a Microsoft základní Professional rozvoj systému (PDS) verze 7.0 a 7.1. Mnoho problémů s komunikací může být skutečně nevhodné zdrojový kód návrhu a tok řízení.
  3. Mnoho problémů s komunikací může být uveden pouze na některých konfiguracích hardwaru a jsou obtížné vyřešit nebo duplikovat v jiných počítačích. Doporučujeme zkoušení přímé připojení (s krátký kabel nulového modemu) namísto s telefonní/modem propojení mezi odesilatelem a příjemcem izolovat problémy na dané konfiguraci.
  4. Zapojovací schémata pro kabely se velmi liší. Zkontrolujte kód pin kabeláž na kabel. Pro přímé propojení kabelem je pravděpodobnější poskytnout problémy než krátké, nízká odolnost kabelu kabel dlouhý nebo vysokou odolnost.
  5. Pokud oba "COM1:" a "COM2:" jsou otevřené, "COM2:" bude obsluhovány nejprve. Při vysoké přenosové rychlosti "COM1:" může dojít ke ztrátě znaků při konkurenční čas procesoru s "COM2:".
  6. Pomocí příkazu ON COM GOSUB namísto dotazování LOC(n) funkce zjistit komunikace vstup někdy vyřešit časování nebo ukládání do vyrovnávací paměti potíže způsobené zpoždění v Basic. Může být způsobeno zpoždění v Basic uvolněné místo řetězce, MALOVÁNÍ příkazy nebo jiné operace, které intenzivně použít procesoru.
  7. Ujistěte se, že řádky metody handshaking příslušný hardware (tj. CS, DS, CD atd.) jsou kontrolovány Basic. Přestože zakázání těchto časových limitů (nastavení odpovídající hodnoty v příkazu OPEN základní na nulu) je užitečná pro určení, jaký používá váš hardware linky, jej nelze považovat za univerzální metoda pro stanovení sériové komunikace, vzhledem k tomu, že ignorování hardwarová metoda handshaking může zvýšit možnost časování problém, který může vést k zablokování.
Mnoho programů použití obchodních sdělení sofistikované techniky nebyl nalezen v Microsoft Basic a může poskytnout lepší výkon.


Potřeba lepšího výkonu komunikace, než se zobrazuje přes Basic, můžete vyzkoušet Microsoft C. (Microsoft C rutiny můžete volat z Microsoft jazyk QuickBasic 4.0, 4.0b a 4.5 z Microsoft základní kompilátoru 6.0 a 6.0b a Microsoft základní Professional rozvoj systému (PDS) verze 7.0 a 7.1.) Výborným zdrojem je následující:
"C Programmer's Guide sériové komunikace" ve společnosti Jana Campbell, vydané nakladatelstvím Howard W. Edice nakladatelství Sams & Company.
Jazyk QuickBasic 3.0, 4.0, 4.5 a 4.0b implementovat komunikaci prostřednictvím přímé přerušení požadavek přerušení IRQ3 a IRQ4 vstupní řádky na čipu 8259 řadič (namísto vyvolání přerušení ROM BIOS).


Následující seznam poskytuje vynikající popis technické, hardwarové sériové komunikace pro IBM PC:
"8088 programovací jazyk assembler: IBM PC" druhé vydání pomocí Willen & Krantz, vydané nakladatelstvím Howard W. Edice nakladatelství Sams & Co. (1983, 1984). Stránky 92-93 a v kapitole 7 (stránky 166 k 188).
Vlastnosti

ID článku: 39342 - Poslední kontrola: 16. 1. 2017 - Revize: 1

Váš názor