Urządzenia peryferyjne
Laboratorium nr 5
Temat: Zasady obsługi modemów i nawiązywania połączeń.
Prowadzący: dr inż. Tomasz Walkowiak
Elżbieta Tchorowska, 171067
Konrad Kukulski, 163930
Cele ćwiczenia:
Należało wykonać program, który miał za zadanie połączyć się z modemem na porcie COM1, połączyć się z modemem na komputerze drugim i stworzyć program do komunikacji komputerów między sobą.
Wybranym językiem programowania było C++ , środowisko VisualStudio2008.
Wykonanie:
Pierwszym etapem programu było umożliwienie połączenia się z portem COM1, na którym znajdował się modem.
Następnym krokiem było stworzenie interfejsu do obsługi. Znalazły się tam dwa przyciski „Wyślij” i „+++”, których zadaniem było wysłanie komendy i sekwencji przełączania się między trybem komend i danych. Stworzono okienko, w którym miały pokazywać się wybrane przez nas komendy i komunikaty oraz komunikaty odebrane z drugiego komputera.
Przycisk „+++” ustawiono w sposób:
Przycisk wysyłania wiadomości ustawiono razem już ze znakiem CR NL:
W oknie otrzymywanych wiadomości ustawiono podobnie tylko z argumentem:
Po stworzeniu takiego programu, zaczęliśmy go testować. Po długich nieudanych próbach nawiązania połączenia z modem, udało się je nawiązać. Błąd wystąpił z powodu braku naszej cierpliwości, gdyż modem potrzebował czasu by nawiązać połączenie z drugim modemem.
W końcu udało się nam zrealizować wysyłanie informacji z jednego komputera na drugi. Niestety działało to tylko w jedną stronę z komputera, który nawiązał połączenie.
Nie wystarczyło nam czasu na sprawdzenie tego błędu i stworzenie komunikacji obustronnej.
port = new SerialPort();
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
PortsComboBox.Items.AddRange(SerialPort.GetPortNames());
port.RtsEnable = true;
PortsComboBox.SelectedIndex = 0;
TerminalTextBox.AppendText("IN: " + port.ReadExisting() + "\r\n");
if (port.IsOpen)
{
port.Write("+");
port.Write("+");
port.Write("+");
TerminalTextBox.AppendText("[" + DateTime.Now + "] OUT: +++\r\n");
if (port.IsOpen)
{
port.Write(InputTextBox.Text + "\r\n");
}