![]() |
|
|
#1
|
|||
|
|||
|
Всем добрый день!!! Помогите разобраться
Программа должна получить и передавать по USB порту данные. то есть программа для прошивки. есть Китайский J-Link v8 описано оно тут http://de1fer.ru/?p=146#more-146. дайте совет в какую сторону капать. |
|
#2
|
||||
|
||||
|
Капать в нос, по 10 капель 3 раза в день.
|
| Эти 3 пользователя(ей) сказали Спасибо Freeman за это полезное сообщение: | ||
|
#3
|
|||
|
|||
|
рассматривал эту версию http://www.delphisources.ru/pages/so...bcom_port.html
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
F: TFileStream;
Buf: String;
N, PackSize, PackCount: Integer;
begin
Button2.Enabled := False;
Button3.Enabled := False;
Button4.Enabled := False;
FBreak := False;
BComPort1.BaudRate := TBaudRate(ComboBox1.ItemIndex);
if not BComPort1.Open then Exit; // Открываем порт
Button2.Enabled := True;
F := TFileStream.Create(OpenDialog1.FileName, fmOpenRead); // Открываем файл
try
// Определим размер и количество пакетов.
if F.Size <= BComPort1.OutBufSize then
begin
PackSize := F.Size; PackCount := 1;
end else
begin
PackSize := BComPort1.OutBufSize;
PackCount := F.Size div PackSize;
if (F.Size mod PackSize) > 0 then Inc(PackCount);
end;
ProgressBar1.Max := PackCount;
ProgressBar1.Position := 0;
N := 0; FEmpty := False;
// Передаем имя файла и его размер
BComPort1.WriteStr(ExtractFileName(OpenDialog1.FileName) + ':' +
IntToStr(F.Size) + '[BEGIN]');
repeat
repeat
// Ждем, пока выходной буфер не освободится или пользователь не прервет передачу
Application.ProcessMessages; Sleep(10);
until FEmpty or FBreak;
if FBreak then
// Пользователь прервал передачу. Ожидание конца передачи текущего пакета
begin
repeat
Application.ProcessMessages; Sleep(10);
until FEmpty;
Break;
end;
F.Seek(N * PackSize, soFromBeginning);
if (F.Size - F.Position) < PackSize then // Последний пакет
PackSize := F.Size - F.Position;
SetLength(Buf, PackSize);
F.Read(Buf[1], PackSize);
FEmpty := False;
BComPort1.WriteStr(Buf);
Inc(N);
ProgressBar1.Position := ProgressBar1.Position + 1;
until N = PackCount;
BComPort1.WriteStr('[END]'); // Строка, идентифицирующая конец передачи
finally
F.Free;
if BComPort1.Close then
begin
Button2.Enabled := True;
Button3.Enabled := True;
Button4.Enabled := True;
end;
end;
end;Админ: учимся правильно форматировать текст! Последний раз редактировалось Admin, 10.08.2014 в 22:20. |