|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.05.2009, 14:50 | #1 |
Регистрация: 07.05.2009
Сообщений: 5
|
Помогите с работой COM порта, компонет BCPort
Помогите с работой COM порта, не могу правильно написать отправку одновременно нескольких команд на com порт (?54&0; ?54&1; ?54&2; ?54&3 и т.д.) , когда отправляю команды то терминал все ответы сбивает в одну строку, а мне надо чтобы каждый ответ в терминале начинался с новой строки.
Еще один вопрос, как сделать что бы ответ на команду вносился в отдельную форму, к примеру я отсылаю одновреммено 10 команд (?54&0; ?54&1; ?54&2; ?54&3 и т.д.) и ответ на каждую команду вносился в Memo1,Memo2,Memo3 и т.д.. implementation {$R *.DFM} {$R Led.res} procedure AddHexString(S : String; Lines : TStrings ); var AddS, HexS, CopyS : String; i : Integer; const SLen = 8; begin while Length(S) > 0 do begin AddS := Copy(S,1,SLen); HexS := ''; Delete(S,1,SLen); for i := 1 to SLen do begin CopyS := Copy(AddS,i,1); if CopyS <> '' then HexS := HexS + ' ' + Format('%2.2x',[Byte(CopyS[1])]) // else HexS := HexS + ' '; end; while Length(AddS) < SLen do AddS := AddS + ' '; for i := 1 to SLen do case AddS[i] of #0..#31 : AddS[i] := '.'; #127 : AddS[i] := '.'; end; Lines.Add(HexS+' : '+AddS); end; end; procedure TMainForm.FormCreate(Sender: TObject); begin EnumComPorts(cbPort.Items); cbPort.ItemIndex := 0; cbBaudRate.ItemIndex := 6; SetLedCTS(False); SetLedDSR(False); SetLedRLSD(False); end; procedure TMainForm.btnConnectClick(Sender: TObject); begin BComPort1.Port := cbPort.Text; BComPort1.BaudRate := TBaudRate(cbBaudRate.ItemIndex); if BComPort1.Open then begin Edit1.Enabled := True; Edit1.Color := clWindow; btnConnect.Enabled := False; cbPort.Enabled := False; btnDisconnect.Enabled := True; cbSetDTR.Enabled := True; cbSetDTR.Checked := True; cbSetRTS.Enabled := True; cbSetRTS.Checked := True; btnSend.Enabled := True; btnSend1.Enabled := True; cbCRLF.Enabled := True; btnClear.Enabled := True; Memo1.Enabled := True; Memo1.Color := clWindow; SetLedCTS(csCTS in BComPort1.Signals); SetLedDSR(csDSR in BComPort1.Signals); SetLedRLSD(csRLSD in BComPort1.Signals); Edit1.SetFocus; end; end; procedure TMainForm.btnDisconnectClick(Sender : TObject); begin if BComPort1.Close then begin btnConnect.Enabled := True; cbPort.Enabled := True; btnDisconnect.Enabled := False; cbSetDTR.Enabled := False; cbSetRTS.Enabled := False; btnSend.Enabled := False; btnSend1.Enabled := False; cbCRLF.Enabled := False; btnClear.Enabled := False; Memo1.Enabled := False; Memo1.Color := clBtnFace; Edit1.Enabled := False; Edit1.Color := clBtnFace; SetLedCTS(False); SetLedDSR(False); SetLedRLSD(False); end; end; procedure TMainForm.btnSendClick(Sender: TObject); //Отпрвка одной комнды var SendStr : String; begin if Length(Edit1.Text) > 0 then begin SendStr := Edit1.Text; if cbCRLF.Checked then SendStr := SendStr+#$0d#$0a; BComPort1.WriteStr(SendStr); Edit1.Text := ''; Edit1.SetFocus; end; end; procedure TMainForm.btnSend1Click(Sender: TObject); // Отправка нескольких команд var SendStr : String; begin if Length ('?54&10') > 0 then begin SendStr := '?54&10'#$0d#$0a'?54&11'#$0d#$0a'?5 4&12'#$0d#$0a'?54&13'#$0d#$0a'?54&1 4'; if cbCRLF.Checked then SendStr := SendStr+#$0d#$0a; BComPort1.WriteStr(SendStr); end; end; procedure TMainForm.BComPort1RxChar(Sender: TObject; Count: Integer); var SendStr: String; begin BComPort1.ReadStr(SendStr, Count); if cbCRLF.Checked then // Добавление перевода строки SendStr := SendStr+#$0d#$0a; Memo1.Text := Memo1.Text+SendStr; end; procedure TMainForm.Edit1KeyPress(Sender: TObject; var Key: Char); begin if BComPort1.Connected and (Key = #13) then begin BComPort1.WriteStr(Edit1.Text + Key); Edit1.Text := ''; end; end; procedure TMainForm.cbBaudRateChange(Sender: TObject); begin BComPort1.BaudRate := TBaudRate(cbBaudRate.ItemIndex); end; procedure TMainForm.btnClearClick(Sender: TObject); begin Memo1.Clear; Edit1.SetFocus; end; |
13.05.2009, 12:18 | #2 |
Заблокирован
Регистрация: 23.04.2009
Сообщений: 7
|
Wholesale Brand Handbags
We offer you Brand Handbags related with products,the Wholesale Brand Handbags picture-related products,poor prices and other information,wholesale or retail,and the Brand Handbags related products introduced, related products, please contact with sneaker-file@hotmail.com
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите с работой COM порта на Delphi7 | sttauffen | Помощь студентам | 3 | 11.05.2009 15:02 |
компонет memo | kate158 | Компоненты Delphi | 4 | 01.11.2008 15:35 |
Как получить данные с COM-порта или другого любого порта? | DeLure | Общие вопросы C/C++ | 5 | 20.09.2007 00:50 |