У меня есть код Delphi 7, который принимает значения датчиков от DSP TMS32F28069. Значение, полученное Delphi, это данные файла Hex. Например, я отправить данные:Пропущенные данные, полученные с использованием Serial comport 411f delphi 7
F1; 01; 01; 07; 00; 00; 0A; 00; 00; 00; 00; F7
из ДСП.
Я использую Comport 411f, и на самом деле, когда я использую Windows 10 64-битную английскую версию, все в порядке. Но когда я использую 64-битные окна Windows, данные, которые иногда получаются, иногда меняются. Я попробовал несколько ноутбуков с использованием Windows 7 64-битной китайской версии, и у нее такая же проблема. Полученные файлы на окна 7 64 бит китайская версия, демонстрирующая:
F1; 01; 01; 01; 00; 00; 00; F7; 00; 00; F7; 00.or F1; 01; 07; 01 ; 00; 0A; 00; 00; F7; F7; 00; 00
и всегда change.This код, который я написал в Delphi 7:
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
p:integer;
r:array[1..12]of integer;
h:array[1..12]of String;
begin
comport1.Open;
for p:=1 to 12 do
begin
comport1.Read(r[p],1);
h[p]:= IntToHex((r[p]),2);
sMemo3.Text:= h[1]+';'+h[2]+';'+h[3]+';'+h[4]+';'+h[5]+';'+h[6]+';'+h[7]+';'+h[8]+';'+h[9]+';'+h[10]+';'+h[11]+';'+h[12];//Show data Receive on Memo4//
end;
end;
Пожалуйста, дайте мне какие-либо предложения, почему это произошло на Windows 7 64-битной китайской версии? потому что, когда я использую Windows 7 64-битную английскую версию, она также отлично работает.
Спасибо
Параметр 'ComPort1RxChar' имеет' count' вход. Это количество полученных байтов. Вы должны использовать это, чтобы заполнить буфер, который является глобальным по объему, и как только все байты будут получены, вы должны интерпретировать полное сообщение. –
Есть ли у вас какой-нибудь пример кода? я бы хотел попробовать. Спасибо. –
Вы также обновляете записку внутри цикла, что немного бессмысленно. Обновите его один раз, когда сообщение будет завершено. –