[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]
{
CB> I'm trying to write a simple terminal for Windows with Borland Pascal
7.0. CB> But I don't get it to work. Does someone have a small example/source?
CB> I know how to send chars to the serial port, that's not the problem. But
CB> how to display the modem receiving queue? I guess I'll have to use
CB> ReadComm.. but how?
CB> Here's how to send characters:
CB> uses
CB> WinProcs, WinTypes, WinCrt;
CB> var
CB> cid: Integer;
CB> ch: Char;
CB> begin
CB> cid:=OpenComm('COM2:',1024,1024);
CB> if cid>=0 then
CB> begin
CB> repeat
CB> if keypressed then
CB> begin
CB> Ch:=Readkey;
CB> TransmitCommChar(cid,ch);
CB> end;
CB> { readComm ??? }
CB> until ch=#27;
CB> CloseComm(cid);
CB> end;
CB> end.
CB> Cornelis
These are samples from Borland's ObjectVision that demonstrate work with COM
ports under Windows.
=== Cut ===
function Dial(Comport, Dialtype, Number:PChar): integer; export;
var
P, Config, Num: PChar;
Struc: string;
i: integer;
begin
Struc := #0;
GetMem(Config, 20);
GetMem(P, 255);
Strcopy(@Struc[1], Number);
Struc[0] := Char(StrLen(Number));
Struc := Struc+#0;
{ Strip Routine }
i := 1;
while i <= length(Struc) do
begin
if (((Struc[i] < #48) or (Struc[i] > #57)) and ((Struc[i] <> ','))) then
begin
Delete(Struc, i, 1);
Dec(i);
end;
i := i+1;
end;
StrCopy(Config, Comport);
Config := StrCat(Config, ':12,n,8,1');
StrLCopy(P, Dialtype, 20);
P := StrCat(P, @Struc[1]);
P := StrCat(P, #13#10);
BuildCommDCB(Config, DCB);
if CID <= 0 then
begin
Cid := OpenComm(Comport, 1024, 1024);
if not(CID<0) then
begin
DCB.ID := CID;
SetCommState(DCB);
if WriteComm(CID, p, StrLen(P)) <= 0 then
begin
MessageBox(getfocus, 'Dial Error', 'Error', Mb_Ok);
Dial := 1; {return error}
end
else
Dial := 0; {return no error}
end;
end;
FreeMem(P, 255);
FreeMem(Config, 20);
end;
function Hangup : bool; export;
begin
if not(CID < 0) then
begin
WriteComm(CID, 'ATH'#13#10, 5);
If CloseComm(Cid) < 0 then
begin
MessageBox(GetFocus, 'Hangup Error', 'Error', Mb_Ok);
Hangup := bool(0);
end
else
begin
Cid := 0;
Hangup := bool(1);
end;
end;
end;
[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]