Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.24;
Скачать: CL | DM;

Вниз

Этот вопрос уже задавался, но все же... Как мне работать с СОМ портом без ассемблера?   Найти похожие ветки 

 
Fredericco ©   (2002-03-13 21:17) [0]

Простите за глупый вопрос, но нет каких-либо процедур или функций
типа Write() или Read(), чтобы, скажем, послать на СОМ порт такую последовательность -> 1000101010100101010101 или ей подобные. И не знает ли кто-нибудь что за такой порт 475? В контексте он упоминался на ряду с RS232(собственно COM порт).


 
ZZ   (2002-03-14 00:42) [1]

см. CreateFile,ReadFile,WriteFile,CloseHandle


 
Step ©   (2002-03-17 17:51) [2]


Запускаем это все в отдельный поток а то окно висеть будет

После удачного выполнения этой программы, на диске c:\ создаcтся файл с названием out.txt? в который собственно и сохранялись те самые 11 байт считанные из com порта. Естественно для того чтобы программа работала, нужно чтобы что-то передавало данные в порт, например если у вас в com порт подсоединен модем то просто переключите его несколько раз с войса на дату

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
dcb : TDcb; // структура ( виндусовская ) с установками СОМ портов
hCom : THandle; // handler СОМ2
fSuccess : boolean;
dwRead : DWORD;
CharArray : array[0..10] of char; // временный массив данных в оперативной памяти
fileOut : file of char; // файл в который будут писаться данные из СОМ2
i : integer;
begin
hCom := CreateFile(PChar("COM2"),GENERIC_READ,0,nil,OPEN_EXISTING,0,0); //получение указателя на СОМ2

try


fSuccess:= GetCommState(hCom, dcb); // Получение данных о текущих установках СОМ2 и заполнение
// структуры dcb

dcb.BaudRate := CBR_38400; // Установка новых параметров
dcb.ByteSize := 8; // для СОМ2, скорость 38400, 8-ми битный обмен,
dcb.Parity := NOPARITY; // нет контроля четности,
dcb.StopBits := ONESTOPBIT; // один стоповый бит

fSuccess := SetCommState(hCom, dcb); // Установка новых параметров для СОМ2

except
ShowMessage("Error");
end;

if fSuccess then ShowMessage("Success!")
else ShowMessage("Error of initiate ComPort...");

for i:=0 to 10 do // цикл чтения из СОМ2 ( к примеру ) одиннадцати байт
begin
ReadFile(hCom, CharArray[i], 1, dwRead, nil); // чтение одного байта из порта
end;

AssignFile(FileOut,"c:\out.txt");
Rewrite(FileOut);
for i:=0 to 10 do // цикл записи полученной информации в файл на диске
begin
Application.ProcessMessages;
Write(FileOut,CharArray[i]);
end;

CloseFile(FileOut);
CloseHandle(hCom);
end;

end.


 
Master Denis ©   (2002-03-28 14:35) [3]

www.moxa.com - библиотека PComm



Страницы: 1 вся ветка

Текущий архив: 2002.06.24;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
3-77255
Kurmanbek
2002-05-30 07:28
2002.06.24
Переименование таблицы в IBase


1-77435
diww
2002-06-11 10:58
2002.06.24
Поиск в ListBox если MultiSelect = true


1-77426
Burmistroff
2002-06-09 21:22
2002.06.24
Динамические массивы


1-77337
Sticky Fingaz
2002-06-06 20:25
2002.06.24
Интернет в локалке


1-77473
Sniffer
2002-06-11 19:29
2002.06.24
Чёртик, бегающий по экрану