Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2009, 18:17   #1
sttauffen
 
Регистрация: 07.05.2009
Сообщений: 5
Сообщение Помогите с работой COM порта на Delphi7

Помогите с работой COM порта, не могу правильно написать отправку онавреммено нескольких команд на com порт, когда отправляю команды то терминал все ответы сбивает в одну строку, а мне надо чтобы каждый ответ в терминале начинался с новой строки.

Еще один вопрос, как сделать что бы ответ на команду вносился в отдельную форму, к примеру я отсылаю одновреммено 10 команд и ответ на каждую команду вносился в определенную форму.
Все ответы которые получаю с порта в ASCII.
Пример:

uses SerialNGBasic;
{$R *.DFM}
procedure AddHexString(S : String; Lines : TStrings );
var AddS, HexS, CopyS : String;
i : Integer;
const SLen = 21;
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('.'+AddS);
end;
end;

procedure TForm1.BasicSettingsBtnClick(Sender : TObject);
begin
SerialNGBasicDLG.SetDLGData(SerialP ortNG1);
if SerialNGBasicDLG.ShowModal = mrOK then
SerialNGBasicDLG.GetDLGData(SerialP ortNG1);
end;

procedure TForm1.SerialPortNG1RxClusterEvent( Sender: TObject);
begin
if SerialPortNG1.NextClusterSize >= 0 then
begin
if SerialPortNG1.NextClusterCCError = 0 then
else
Terminal.Lines.Add(FormatDateTime(' ', Now));
AddHexString(SerialPortNG1.ReadNext ClusterAsString,Terminal.Lines);
end;

end;

Кнопка отравки одной команды

procedure TForm1.SendBtnClick(Sender: TObject);
var SendStr : String;
begin
if Length(Edit1.Text) > 0 then
begin
SendStr := Edit1.Text;
if CBAddCRLF.Checked then
SendStr := SendStr+#$0d#$0a;
SerialPortNG1.SendString(SendStr);
end;
end;

Кнопка отравки нескольких команд

procedure TForm1.SendStatusRequestBtnClick(Se nder: TObject);
var SendStr : String;
var SendStr1 : String;
begin
if Length('?54&0') > 0 then
begin
Terminal.Clear;
SendStr := '?54&10';
SendStr1 := '?54&13';
if CBAddCRLF.Checked then
SendStr := SendStr+#$0d#$0a;
SendStr1 := SendStr1+#$0d#$0a;
SerialPortNG1.SendString(SendStr);
sleep(150);
SerialPortNG1.SendString(SendStr1);
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
SerialPortNG1.Active := False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
SerialPortNG1.Active := True;
end;


end.
sttauffen вне форума Ответить с цитированием
Старый 11.05.2009, 10:21   #2
sttauffen
 
Регистрация: 07.05.2009
Сообщений: 5
По умолчанию

Не ужели нет специалистов которые моглибы помочь.
sttauffen вне форума Ответить с цитированием
Старый 11.05.2009, 14:15   #3
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

Цитата:
терминал все ответы сбивает в одну строку, а мне надо чтобы каждый ответ в терминале начинался с новой строки.
перевод строки должен обрабтываться програмным обеспечением на принимающем терминале
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Старый 11.05.2009, 15:02   #4
sttauffen
 
Регистрация: 07.05.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Anatole Посмотреть сообщение
перевод строки должен обрабтываться програмным обеспечением на принимающем терминале
Проблема в том что мне надо разделить принимаемые данные чтобы осуществить перевод строки, на устройство я отсылаю одновременно 10 команд и ответ получаю одной посылкой
sttauffen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi7 помогите нарисовать линию AlexandЯ Помощь студентам 15 12.05.2009 12:23
Помогите с Delphi7 blackz Помощь студентам 0 11.04.2009 15:23
Как получить данные с COM-порта или другого любого порта? DeLure Общие вопросы C/C++ 5 20.09.2007 00:50