RS232 Tester


10
Ocena: None Średnia: 10 (2 głosujących)

Program został napisany w C++Builder 6. Jest prostym testerem portu RS-232. Umożliwia wysyłanie liczb z zakresu 1-255 na port COM oraz odbieranie przychodzących z niego danych. Program jest bardzo pomocny podczas programowania mikrokontrolerów, które wykorzystują port RS-232 jako interfejs do komunikacji z komputerem PC.

Na rysunku poniżej przedstawiony jest wygląd najnowszej wersji programu:

Obsługa:

Po uruchomieniu programu konieczna jest konfiguracja portu szeregowego (COM), czyli ustawienie numeru portu (COM1, COM2,... ), szybkości transmisji, ilości bitów danych i bitów stopu. Po otwarciu portu rozpoczyna się ciągły odczyt danych z portu (po jednym bajcie). Wysyłanie liczby na port odbywa się jednorazowo po naciśnięciu przycisku "wyślij". Dostępność nowej wersji można sprawdzić w oknie "O Programie".

Wersje:

0.65 - program działający, bez ostrzerzeń o wpisaniu złych danych w polu do wysyłania
0.70 - tworzenie okna "O programie" wraz z obsługą e-mail i odnośnikiem do tej strony
0.76 - zakończenie pracy nad oknem "O Programie", sprawdzanie najnowszej wersji dostępnej na stronie.
0.77 - zmiana wyglądu programu, drobne poprawki.
0.95 - dodatkowa funkcja wysyłająca ciąg bajtów(max 64 bajty), wysyłanie cykliczne danych

ZałącznikWielkość
RS232Tester.exe229 KB
Ikonki29.73 KB
Źródła Programu v0.77727.87 KB
Źródła Programu v0.95800.52 KB



Portret użytkownika siwy

pytanie

Czyli jeśli wpiszemy cyfrę 5 i klikniemy na wyślij to w odpowiedzi powinna się wyświetlić też piątka, bo próbuje zrobić pilot do kompuertera ale ciągle nie chce mi działać te urządzenie.

Portret użytkownika mirley

Pilot komputerowy, według

Pilot komputerowy, według projektu z mojej strony jedynie wysyła informacje a więc komputer je odbiera ale sam nic nie wysyła. Po włączeniu programu należy wybrać port COM do którego zatał podłączony pilot, następnie ustawić parametry transmisji i kliknąć otwórz port. To jest wszystko. Program będzie teraz cały czas śledził port i każdy bajt zostanie odczytany na listę. Nie klikamy przycisku wyślij bo nie ma po co :). Kabel którym ma byc podłączony pilot to zwykła przedłużka portu RS232, bez zmiany miejscami pinów Rx z Tx (bez krosowania)

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc

pytanie

Witam
otwieram port wpisuje wartości i nie wiem czy wysyła ale wiem ze nie odbiera nic sie nie pokazuje jako serownika lpt używam lemark z11 (sterowniki już w xp) co może być tego przyczyną ?programator działa zasilanie jest

Portret użytkownika mirley

Re: Pytanie

Mogłbyś wyjaśnić dokładnie o co chodzi w pytaniu ktore przed chwilką zadałeś. Dokładnie chodzi mi o to po co wspominasz o porcie rownoległym lpt jeśli chcesz korzystać z monitora portu szeregowego com (Nie rozumiem także po co jakieś sterowniki do lpt, nigdy nawet nie wpadło mi to do głowy). Czy chodzi o programowanie mikrokontrolera za pomocą portu lpt? Czy odbior danych z mikrokontrolera przez port szeregowy? Ten program służy do tego drugiego zadania :)

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika etomiko

działanie RS232 Tester

Do XP poprzez konwerter USB-RS232 podłączony mam czytnik MS9535 VoyagerBT. Zainstalowany jest wirtualny port COM4. Otwarcie portu jest prawidłowe ale odczyt z czytnika nie pojawia się w oknie odbieranie. Co robię żle?

Portret użytkownika mirley

Re: RS232 Tester

A wiesz dokładnie jak działa ten czytnik i co wysyła? Czy ustawiłeś poprawne parametry transmisji? Bez problemu działa z wirtualnymi COM'ami, ale jest to prymitywny program, który nie obsługuje pewnie wszystkiego. Osobiście używam go tylko do testowania transmisji do i z mikrokontrolerów.

Żeby dokładnie zbadać problem użyj zwykłego terminala (pod Windowsem dobry jest Hyperterminal)

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika etomiko

RS232 Tester

Czytnik czyta kody kreskowe i pod DOS-em działa prawidłowo. Parametry transmisji są prawidłowe. Ponieważ piszę program w Pythonie i pierwszy raz mam obsługiwać wirtualny COM chciałem sprawdzić czy na porcie mam wszystko w porzadku. W tzw miedzyczasie resetowałem WIN i po tym Tester podaje wartości odczytane ale niezgodne z tym co czyta czytnik (chociaż konsekwentnie takie same). Kod czytany przez czytnik 5901498011583 wyswietla cztery linie
53
255
255
255
Czyli dalej mam problem

Portret użytkownika mirley

Re: Rs232 Tester

Sprawdź czy czytnik idzie pod hyperterminalem. Mój program może być za wolny bo jest bardzo prymitywnie napisany

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika etomiko

RS232 Tester

Bardzo dziękuję za pomoc

Portret użytkownika gosc

podobny program

witam

czy jest jakis program w którym wpisze kilka liczb naraz i on mi jest wysle, konkretnie chodzi mi o to zeby wysłas 5 bajtów naraz ?

Portret użytkownika grizz

Taki program to 7 linijek w

Taki program to 7 linijek w pythonie:

import serial
ser = serial.Serial("COM1", 9600, timeout=0)
ser.write(chr(value1)) # 1 bajt
ser.write(chr(value2)) # drugi
ser.write(chr(value3)) # trzeci
ser.write(chr(value4)) # czwarty
ser.write(chr(value5)) # piąty

Skopiuj. Zapisz. Uruchom ;)

Portret użytkownika mirley

Re: RSTester

Zalecam rozwiązanie które podał grizz bo w pythonie wygodniej się pisze, ale jak chcesz zmodyfikować mój kod źródłowy to zmień fragment programu odpowiedzialny za wysyłanie bajtu:

void _fastcall  WyslijBajt(int liczba)   //liczba dodatnia
{
  if (liczba > 255 || liczba < 0 ) liczba = 0;
 
  Buffer_O[0] = liczba;                 //do 0 bajtu wpisywana jest liczba
  Write_Comm(hCommDev,Buffer_O, strlen(Buffer_O));
  FlushFileBuffers(hCommDev);
 
  Clear_Buffers(false,true);
}

w linijce

Buffer_O[0] = liczba;   

do zerowego bajtu bufora wpisywana jest wartość, poprostu wpisz kolejne bajty do komórek następnych:

Buffer_O[1] = liczba;   
Buffer_O[2] = liczba;
.... 

nie sprawdzałem tego narazie bo brak mi czasu ale poszperaj troszkę w kodzie. Oczywiście całą funkcję WyslijBajt musisz przerobić bo moja jako argument przyjmuje tylko jednego int'a

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc

dzieki

dzieki za zainteresowanie ale raczej sobie z tym nie poradze :) Jak skoncze mature to się napewno tym pobawie

Portret użytkownika kax

Hej Napisalem prosty program

Hej

Napisalem prosty program w Bascomie

[qb]
 
 
$regfile = "m8def.dat"
$crystal = 16000000
$baud = 9600
 
Dim A As Byte
Dim B As Byte
Dim C As Byte
 
 A = 129
 B = 234
 C = 0
 
Do
 
Print A
Print B
Print C
 
Loop
End
[/qb]

Problem polega na tym ze w twoim programie dostaje bledne wartosci:
http://chomikuj.pl/TadekS/Wysypisko/frs232.TIF

Natomiast HyperTerminal dziala poprawnie, czy to jest spowodowane, nie uzywam duzej predkosci transmisji?
http://chomikuj.pl/TadekS/Wysypisko/htrs232.TIF

Chcialbym bazowac na twoim programie z obsluga portu RS232 do swojego sterownika jako panel kontroli i zarzadzania.

Portret użytkownika mirley

Re: Rs tester

Po pierwsze używaj printbin zamiast print, nie sprawdzałem co odbiera program jak wysyła się print'em

Dodaj opóźnienie po wysłaniu tych 3 bajtów, np "waitms 10" bo program skanuje bufor w kompie co jakiś tam czas i jak będziesz wysyłał bajt za bajtem bez żadnej przerwy to może się zapchać wszystko, poza tym nie wiem co jest z wartością 0, musisz sprawdzić czy działa poprawnie

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika kax

Witam Zmienielem Print na

Witam

Zmienielem Print na Printbin i dziala ale nie ma zera. Jak daje "printbin 0" nie dostaje nic? z czego to moze wynikac ?

Portret użytkownika mirley

Re: Zero

Z tego powodu że w programie jest napisane "if liczba != 0" W jakiś sposób muszę sprawdzać zajętość bufora a cyfra zero okazała się nieprzydatna w moich testach

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika kax

wersja Visual Basic

Poszedlem za krokiem i napisalem wersje terminala w VisualBasicu, problem w tym ze dziala on tak samo jak HyperTerminla, tzn. jak wysylam dane polecniem print costam to dostaje to co wyslalem natomiast jak uzywam printbin to dostaje krzaki, z czego to wynika ? W twoim programie jest odwrotnie, jak sie uzywa printbin to jest ok, natomiast print powoduje niewlasciwe wartosci. Ponizej listing mojego programu, co musze dopisac zeby dziala jak twoja wersja ?

Sub Globals
	port = 5
	bitRate = 3
	Dim bitRates(0) As Number
	bitRates() = Array(300,1200,4800,9600,115200)
 
 
 
End Sub
 
Sub App_Start
	Form1.Show
	For i = 1 To 8
		AddEvent("mnuPort" & i, Click, "mnuPorts_Click")
	Next
	For i = 0 To 4
		AddEvent ("mnuBit" & i, Click, "mnuBits_Click")
	Next
	Serial.New1
End Sub
 
Sub Serial_OnCom 'Fires whenever the EnableOnComm is true and there is communication
	TextBox1.Text = TextBox1.Text & Serial.InputString
End Sub
 
Sub mnuPorts_Click 'Handles mnuPort 1 - 8 click event
	Control("mnuPort" & port).Checked = False
	Sender.Checked = True
	port = StrAt(Sender.Text,3)
End Sub
 
Sub mnuBits_Click 'Handles mnuBit0-4 click event
	Control("mnuBit" & bitRate).Checked = False
	Sender.Checked = True
	bitRate = StrAt(Sender.Name,6)
End Sub
 
 
Sub mnuOpen_Click
 
	If Serial.PortOpen = True Then 'close port
	Timer1.Enabled = False
		Serial.PortOpen = False
		Sender.Text = "Open Port"
	Else
	Timer1.Enabled = True
		Serial.CommPort = port
		Serial.BitRate = bitRates(bitRate)
		Serial.PortOpen = True
		Sender.Text = "Close Port"
	End If
End Sub
 
Sub btnReceive_Click
	If Serial.PortOpen = True Then TextBox1.Text = TextBox1.Text & Serial.InputString
End Sub
 
Sub btnSend_Click
	If Serial.PortOpen = True Then Serial.Output(textBox1.Text)
End Sub
 
Sub chkOnCom_Click
	Serial.EnableOnComm = chkOnCom.Checked
End Sub
 
Sub Form1_Close
	If Serial.PortOpen = True Then Serial.PortOpen = False
End Sub
Sub Timer1_Tick
 
	If Timer1.Interval  > 10  Then
 
	TextBox1.Text = TextBox1.Text & Serial.InputString	
	End If
 
End Sub
Sub Button1_Click
Timer1.Enabled = True
End Sub

Portret użytkownika mirley

Re: Rs tester

To co czytasz z portu COM to znaki ASCI, więc spróbuj na początek wysylać wartości z przedziału 48-122, tam powinny być litery. Ja zamieniam to co dostaje z portu na liczbę, bo każdy znak ASCI jest zapisany na jednym bajcie (0-255). Dopiero tą liczbę zamieniam na stringa ale każdy z jej znaków staje się wtedy kodem asci i dostajesz stringa np "123"

Przykład:

Wysyłasz na port liczbę 97, odpowiada to literze "a" i taki znak wendruje po rs do komputera i w buforze na kompie po odczycie otrzymasz "a", musisz zrzutować zmienną znakową na int i otrzymasz 97, po czym przekonwertować to na string "97" i wyświetlić ("97" to teraz dwa znaki asci o numerach: 57,55)

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika kax

Teraz to wyjasnia dlaczego

Teraz to wyjasnia dlaczego dostaje krzaki jak wysylam dane poleceniem Printbin, dzis sprawdze ta konwersje z int na string.
Kolejna kwestia to jak gadac z PC i uC (Atmega32), mianowicie z wykorztaniem Print czy Printbin ?
Chce zbudować wielokanałowy pomiar napiecia do PC, w aplikacji bede mial okienka od U1 do U8, do tych okienek bede chcial wpisac wartosci mierzonych napiec, jezeli wysylam z uC jedna wartosc i mam jedno okienko U1 to nie bedzie problemu, natomiast jak wysle z uC wszystkie dane i je odpowiednio przypisac:

Print U1;U2;U3;U4;U5;U6;U7;U8

to jak przypisać wartości do dopowiednich okienek ? Nie wiem jak to ugryść zeby dzialalo stabilnie i nie zamienialo okienek. Bazuje na Visial Basic 2006, twoj program w Borlandzie ma tendencje do wieszania sie - poczatkowo chcialem na nim bazowac.

Dzis wrzuce program i zrodla w VB.

Portret użytkownika mirley

Re: Rs232

Ja używam zawsze komendy printbin ale to nie jest zasada. Musisz sobie zgrać procesor z programem na kompie

Z uC wysyłasz ciąg bajtów pamiętając co wysyłasz w jakiej kolejności, na kompie odbierasz kolejno do tablicy wszystkie wartości. Najlepiej zrobić to pakietem którego początek i koniec oznaczysz specjalnymi znakami.

Nie wiem o co chodzi ze zwieszaniem programu, u mnie działa dobrze... albo nie trafiłem na specyficzne warunki pracy

Ps. tutaj nie umieszczaj żadnych plików itp. jak masz swój program to załóż sobie wątek na forum w odpowiednim dziale i tam opisz wszystko o co chodzi i jak to widzisz

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika maro

Witam Od niedawna próbuję

Witam
Od niedawna próbuję dowiedzieć się jak odczytać kody z pilota. Pobrałem program wyżej ale jest zero reakcji ze strony programu. nie wiem co jest nie tak. może podpowie mi ktoś w jaki sposób można odczytać kody.

Portret użytkownika mirley

Re: Pilot

Chodzi o kody z pilota Rc5? Przeważnie pisze prosty program i wyświetlam kody na LCD

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika maro

Tak chodzi o kody z pilota

Tak chodzi o kody z pilota RC5 bo mam taki mini pilot i chciałbym go wykorzystać do kolegi odbiornika RC5 i wpisałbym kody na stałe. Może mi kolega podesłać kod do takiego dekodera RC5 z LCD?

Portret użytkownika mirley

Re: RC5

Do kodu źródłowego odbiornika Rc5 wystarczy dodać linijki z konfiguracją LCD:

Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2       'avt 2313 test boart
Config Lcd = 16 * 2
Cls
Cursor Off Noblink

a tam gdzie ustawiasz stany pinów wstaw:

      Cls
      Lcd Komenda

Zakomentuj też linijki w których modyfikujesz stany portów na których jest LCD na czas testów. Dalsze pytania w tej kwestii pisz pod właściwym tematem, czyli odbiornika RC5

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Bakuś

Echo

Czy zwierając we wtyczce portu RS232 w komputerze piny 2 i 3 oraz po wysłaniu na niego jakiejś liczby tym programem powinno się otrzymać w nim (tym programie) tak zwane echo?
Próbuje już różnych programów by w ogóle sprawdzić czy w moim komputerze działa (nie uszkodził) się port COM i jak na razie brak jakichkolwiek efektów co chyba oznacza, że on raczej już nie działa ;/

Portret użytkownika mirley

Re: COM

Tak powinno działać. Sprawdź czy masz napewno dobry numer comu ustawiony. Sprawdź w biosie czy nie ma ustawień od COM

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Bakuś

COM

Numer na pewno dobry, w menadżerze urządzeń (Win7) jest tylko jeden dostępny: port komunikacyjny COM2 i oczywiście "To urządzenie działa poprawnie". Gdy otworzę terminal Bascoma to on otwiera ten port (gdy wybiorę inny np. COM1 to jest "Could not open COM1", przy wybraniu COM2 tego komunikatu nie ma wnioskuję więc, że go otwiera) ale nigdy nie ma echa przy wysyłaniu czegokolwiek. Zworka między pinami 2 i 3 na pewno dobrze styka.
Jak na razie wszystko wskazuje mi na uszkodzenie...

Portret użytkownika mirley

Re: Com

A nie masz takiego programu jak hyper terminal. W windowsie xp jest może w 7 tez. Mój program był kompilowany pod xp więc nie wiem czy działa pod win7. Jeśli byś miał hyperterminal to ustaw tam parametry transmisji bez kontroli przepływu bo nie masz podłączonych linii CTS RTS itp

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.