logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Błędne odczyty z portu COM1 w Turbo Pascalu pod DOS - znaki r i prostokąty

chemik143 26 Kwi 2007 00:32 1208 2
REKLAMA
  • #1 3822383
    chemik143
    Poziom 13  
    Posty: 102
    Pomógł: 1
    Ocena: 17
    Witam

    Mam następujący problem. Napisałem program który wysyła z jednego komputera ciąg znaków. Działać ma pod DOSem i tylko DOSem ... napisany jest w turbo Pascalu. Program czyta z portu COM1 nadchodzące dane... czyżby?? Czyta jakieś bzdury!! Zamiast czytać takie dane jakie przychodzą na port to program wypisuje mi same znaki r z daszkiem... A żeby było śmieszniej z portu com2 czyta prostokąty... a kiedy odwrócone działanie, tzn wysyłam teraz z drugiego kompa a na pierwszym łapię to... dostaje zawsze prostokąty.

    Używam jednego w miarę dobrego kompa.. tzn procek 2,6GHz athlonik... 512MBram i nie wiem czy coś ważnego jeszcze Drugi komp to 486:)

    Błagam o jakieś porady bo to strasznie pilne!
    Program dos_rs_2;
    uses
    Crt, Dos;
    var
    regs : Registers;
    mode: Char; {tryb nadawanie-odbi˘r}
    out : Char; {wysyˆane znaki}
    Begin
    ClrScr;
    regs.AH := 0; {01h}
    regs.DX := 0; {COM1}
    regs.AL := 234; {9600 b/s, ODDPARITY, 7 bit˘w danych, 1 bit stopu}
    Intr($14, regs);
    WriteLN(' 1 - Nadawanie 2 - Odbi˘r [Esc] - koniec nadawania i odbioru');
    mode := ReadKey;
    if(mode = '1') then
    begin
    Repeat {nadawanie}
    out := ReadKey;
    regs.AL := ord(out);
    regs.AH := 1;
    regs.DX := 1;
    Intr($14, regs);
    Write(char(regs.AL));
    Until(out = #27);
    end;
    if(mode = '2') then
    begin
    Repeat {odbi˘r}
    regs.AH := 2;
    regs.DX := 1;
    Intr($14, regs);
    Write(char(regs.AL));
    Until(regs.AL = 27);
    end;
    if(mode = #27) then exit;
    Repeat Until KeyPressed;
    End.
  • REKLAMA
  • #2 3822404
    jankolo
    Spoczywaj w Pokoju
    Posty: 32197
    Pomógł: 1792
    Ocena: 585
    chemik143 napisał:
    Napisałem program który wysyła z jednego komputera ciąg znaków. .... Program czyta z portu COM1 nadchodzące dane

    To jak jest z tym programem? Wysyła dane czy też je odbiera?
    Ponadto: czy program ustawia parametry transmisji na porcie szeregowym? Czy na drugim komputerze port szeregowy jest ustawiony w taki sam sposób? Czy kabel transmisyjny jest odpowiedni?
    Może niech kolega na wszelki wypadek udostępni ten program (kod źródłowy) jako załącznik?
  • #3 3823167
    chemik143
    Poziom 13  
    Posty: 102
    Pomógł: 1
    Ocena: 17
    dodałem...

    Program ma zarówno funkcję wysyłania jak i odbierania... wybieram sobie przy starcie. Kabel hmmm pozostawia wiele do ryczenia.. ale tak czy siak nawet kiedy jest odłączony to są odbierane dane które nie powinny się znajdować na porcie. Skonfigurowane jest ok :)

    Dodam że sprawa sie ma dość dziwnie.. jutro zrobi kolejne testy... Jeśli pojawiają się siwe prostokąty to jest to reakcja na wartość null.. wiec chyba jedyne co mogę zrobić, to znaleźć jakiś porządny kabel:/ Czy wystarczy połączyć piny 3-2 i 2-3 no i masy?? Postaram sie dodać jutro przerwanie jakieś żeby mieć pewność czy w ogóle dane dochodzą...
REKLAMA