procedure TfrmMain.Comm1TxEmpty(Sender: TObject);
begin
Memo1.Lines.add('TxEmpty signal detected...');
end;
procedure TfrmMain.Comm1Break(Sender: TObject);
begin
Memo1.Lines.add('Break signal detected...');
end;
procedure TfrmMain.Comm1Cts(Sender: TObject);
begin
if VaComm1.CTS then
StatusBar1.Panels[0].Text := 'CTS'
else StatusBar1.Panels[0].Text := '';
end;
procedure TfrmMain.Comm1Dsr(Sender: TObject);
begin
if VaComm1.DSR then
StatusBar1.Panels[1].Text := 'DSR'
else StatusBar1.Panels[1].Text := '';
end;
procedure TfrmMain.Comm1Ring(Sender: TObject);
begin
if VaComm1.Ring then
StatusBar1.Panels[2].Text := 'RING'
else StatusBar1.Panels[2].Text := '';
end;
procedure TfrmMain.Comm1Rlsd(Sender: TObject);
begin
if VaComm1.Rlsd then
StatusBar1.Panels[3].Text := 'RLSD'
else StatusBar1.Panels[3].Text := '';
end;
procedure TfrmMain.Comm1Error(Sender: TObject; Errors: Integer);
begin
if (Errors and CE_BREAK > 0) then Memo1.Lines.add(sCE_BREAK);
if (Errors and CE_DNS > 0) then Memo1.Lines.add(sCE_DNS);
if (Errors and CE_FRAME > 0) then Memo1.Lines.add(sCE_FRAME);
if (Errors and CE_IOE > 0) then Memo1.Lines.add(sCE_IOE);
if (Errors and CE_MODE > 0) then Memo1.Lines.add(sCE_MODE);
if (Errors and CE_OOP > 0) then Memo1.Lines.add(sCE_OOP);
if (Errors and CE_OVERRUN > 0) then Memo1.Lines.add(sCE_OVERRUN);
if (Errors and CE_PTO > 0) then Memo1.Lines.add(sCE_PTO);
if (Errors and CE_RXOVER > 0) then Memo1.Lines.add(sCE_RXOVER);
if (Errors and CE_RXPARITY > 0) then Memo1.Lines.add(sCE_RXPARITY);
if (Errors and CE_TXFULL > 0) then Memo1.Lines.add(sCE_TXFULL);
end;
procedure TfrmMain.Button1Click(Sender: TObject);
var
I: Integer;
S: string;
begin
if MessageDlg('This will sent the input a thousand times, continue?',
mtConfirmation, [mbOk, mbCancel], 0) <> mrOk then exit;
S := EditTransmit.Text;
if CheckBoxAddLinefeed.Checked then
S := S + crlf;
for I := 1 to 1000 do
begin
VaComm1.WriteText(S);
Application.ProcessMessages;
end;
end;
procedure TfrmMain.CheckBoxRTSClick(Sender: TObject);
begin
VaComm1.SetRTS(CheckBoxRTS.Checked);
end;
procedure TfrmMain.CheckBoxDTRClick(Sender: TObject);
begin
VaComm1.SetDTR(CheckBoxDTR.Checked);
end;
procedure TfrmMain.CheckBoxBREAKClick(Sender: TObject);
begin
VaComm1.SetBREAK(CheckBoxBREAK.Checked);
end;
procedure TfrmMain.CheckBoxXONClick(Sender: TObject);
begin
VaComm1.SetXOn(CheckBoxXON.Checked);
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
Application.OnException := HandleException;
with ComboPortNum do
ItemIndex := Items.IndexOf('3');
with ComboBaudrate do
ItemIndex := Items.IndexOf('br38400');
with ComboDataBits do
ItemIndex := Items.IndexOf('db8');
with ComboParity do
ItemIndex := Items.IndexOf('paNone');
with ComboStopbits do
ItemIndex := Items.IndexOf('sb10');
//ComboBaudrate.ItemIndex + 1
//Make sure we skip the brUser flag in TVaBaudRate
VaComm1.BaudRate := TVaBaudrate(ComboBaudrate.ItemIndex+1);
VaComm1.Databits := TVaDataBits(ComboDatabits.ItemIndex);
VaComm1.Parity := TVaParity(ComboParity.ItemIndex);
VaComm1.StopBits := TVaStopBits(ComboStopbits.ItemIndex);
end;
procedure TfrmMain.HandleException(Sender: TObject; E: Exception);
begin
if E is EVaCommError then
with E as EVaCommError do
ShowMessage(Message);
end;
procedure TfrmMain.ButtonOpenClick(Sender: TObject);
begin
VaComm1.Open;
Comm1Cts(VaComm1);
Comm1Dsr(VaComm1);
Comm1Ring(VaComm1);
Comm1Rlsd(VaComm1);
end;
procedure TfrmMain.ButtonCloseClick(Sender: TObject);
begin
VaComm1.Close;
Comm1Cts(VaComm1);
Comm1Dsr(VaComm1);
Comm1Ring(VaComm1);
Comm1Rlsd(VaComm1);
end;
procedure TfrmMain.ButtonResetClick(Sender: TObject);
begin
Memo1.Lines.Clear;
Memo2.Lines.Clear;
end;
procedure TfrmMain.ButtonTransmitClick(Sender: TObject);
var
S: string;
Ok: Boolean;
begin
S := EditTransmit.Text;
if CheckBoxAddLinefeed.Checked then
S := S + #13#10;
Ok := VaComm1.WriteText(S);
if not Ok then
Memo1.Lines.add('Error writing to: ' + Format('Port %d', [VaComm1.PortNum]))
else Memo1.Lines.add(Format('Writing %d characters', [Length(S)]));
end;