|
#1
|
|||
|
|||
USB порт
Всем добрый день!!! Помогите разобраться
Программа должна получить и передавать по USB порту данные. то есть программа для прошивки. есть Китайский J-Link v8 описано оно тут http://de1fer.ru/?p=146#more-146. дайте совет в какую сторону капать. |
Эти 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. |