FT232 и программа на Delphi
Добавлено: Пн дек 14, 2009 07:44:08
Народ помогите написать программу на делфи для приема и передачи данных через микруху FT232. Если есть у кого какие нибуть исходники буду очень рад.
Здесь можно немножко помяукать :)
https://radiokot.ru:443/forum/
Поясните пажулуйста что это значит (больны индюком)VoLT писал(а):sachok, твои программки больны индюком народ будте бдительны
"Лаборатория Касперского" обнаружила вирус, заражающий Delphi-приложения на этапе разработки
«Лаборатория Касперского», ведущий производитель систем защиты от вредоносного и нежелательного ПО, хакерских атак и спама, сообщает о появлении вируса Virus.Win32.Induc.a, распространяющегося через интегрированную среду разработки программного обеспечения CodeGear Delphi. Защита от новейшей угрозы уже реализована во всех продуктах «Лаборатории Касперского».
Для своего размножения Virus.Win32.Induc.a использует механизм двушагового создания исполняемых файлов, реализованный в среде Delphi. Согласно данному механизму, исходный код разрабатываемых приложений сначала компилируется в промежуточные .dcu-модули, из которых затем собираются исполняемые в Windows файлы.
Новый вирус активизируется при запуске заражённого им приложения и проверяет, установлен ли на компьютере пакет среды разработки Delphi версий 4.0-7.0. В случае обнаружения пакета, Virus.Win32.Induc.a внедряется в исходный файл базовых констант Delphi Sysconst.pas и компилирует его, в результате чего получается модифицированный откомпилированный файл базовых констант Sysconst.dcu.
Практически каждый проект Delphi включает строчку "use SysConst", поэтому заражение одного системного модуля ведет к инфицированию всех разрабатываемых приложений. Это приводит к тому, что в результате модификации Sysconst.dcu, в дальнейшем все программы, создаваемые в заражённой среде, содержат код нового вируса. Изменённый pas-файл вирусу больше не нужен и удаляется.
В настоящее время вирус не несет функциональной нагрузки помимо самого заражения, скорее он предназначен для демонстрации и тестирования нового вектора заражений. Отсутствие заметной и деструктивной функциональности, инфицирование новым вирусом некоторых версий популярного интернет-пейджера QIP, а также обычная практика публикации .dcu-модулей разработчиками уже привели к широкому распространению Virus.Win32.Induc.a во всем мире. Вполне вероятно, что в будущем он может быть доработан киберпреступниками в сторону увеличения деструктивности.
Проверьте свои установки Delphi (версий с 4 по 7 включительно) и, если найдёте у себя SysConst.bak, выполните следующие действия:
1. Удалите SysConst.dcu
2. Скопируйте SysConst.bak в SysConst.dcu. Важно именно скопировать, а не переименовать, чтобы SysConst.bak тоже остался на диске - это убережёт систему от повторного заражения, т.к. вирус не производит заражения, если находит SysConst.bak, считая, что свою работу он уже выполнил.
Не пытайтесь найти вирус в SysConst.pas: его там НЕТ!
Код: Выделить всё
procedure TForm1.FormShow(Sender: TObject);
var
i: integer;
My_FT_SerialNo: String;
My_FT_Description: String;
begin
FT_Enable_Error_Report := true; // Включаем сообщения об ошибках (отладка)
DevicePresent := False; // Ни одного устройства типо не подключено
ListBox1.Items.Clear; // Очищаем список подключенных устройств
GetFTDeviceCount;
StaticText1.Caption := 'Найдено ' + IntToStr(FT_Device_Count) + ' устройств(о)(а).';
if FT_Device_Count > 0 then Button1.Enabled := TRUE else Button1.Enabled := FALSE;
Код: Выделить всё
procedure TForm1.ListBox1Click(Sender: TObject);
begin
if ListBox1.ItemIndex >= 0 then Button1.Enabled := TRUE else Button1.Enabled := FALSE;
GetFTDeviceSerialNo(ListBox1.ItemIndex);
Selected_Device_Serial_Number := FT_Device_String;
GetFTDeviceDescription(ListBox1.ItemIndex);
Selected_Device_Description := FT_Device_String;
end;
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
If Open_USB_Device_By_Serial_Number(Selected_Device_Serial_Number) = FT_OK then begin
Button1.Enabled := FALSE;
Button2.Enabled := TRUE;
StaticText1.Caption := 'Открыто устройство s/n: ' + Selected_Device_Serial_Number;
end;
end;
Код: Выделить всё
procedure TForm1.Button3Click(Sender: TObject);
var
i: byte;
j: DWORD;
r: integer;
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('Попытка установить битбанг-режим.');
if FT_OK = Set_USB_Device_BitMode(0, 1) then
Memo1.Lines.Add('Режим 1 (асинхронный) установлен успешно.')
else
Memo1.Lines.Add('Режим 1 (асинхронный) установить не удалось');
FT_Current_Baud := StrToInt(Edit1.Text);
if FT_OK = Set_USB_Device_BaudRate then
Memo1.Lines.Add('Скорость ' + Edit1.Text + ' установлена успешно.')
else
Memo1.Lines.Add('Скорость ' + Edit1.Text + ' установить не удалось.');
end;
Код: Выделить всё
FT_Out_Buffer[0] := 255; // зажжём все ножки
if 1 = Write_USB_Device_Buffer(1) then // Отправляем 1 байт
Memo1.Lines.Add('Передано успешно')
Код: Выделить всё
if FT_OK = Set_USB_Device_BitMode(0, 1) thenКод: Выделить всё
if FT_OK = Set_USB_Device_BitMode($FF, 1) thenА как выставить произвольную скорость COM порта??? Например 250000 бит/сек. Чтобы при кварце 16 МГц погрешность USART была 0Rushack писал(а):tviktor, Прицепляй к своей программе Com.pas (во вложениях)
и можешь свободно работать с портом )
Я его во многих проектах использую, багов замечено не было
- Если из программы, то функциейmr_smit писал(а):А как выставить произвольную скорость COM порта???
на офф сайте есть все исходникиMagadan69 писал(а):Не бейте сразу камнями. Дайте кто-нибудь готовый примерчик, для Делфи как считать из FT232R ЕЕПРОМ в массив (а лучше сразу в бин-файл).
Просто взял за базу исходник готовой программы. Переделал под свои нужды. Юсер Арию писать-читать получилось. А вот функцией "FT_ReadEE", никак не могу воспользоваться. В даташите нет примера на нее. А также на "FT_WriteEE".
Никак не компилируется проект, постоянно останавливается на компиляции этой функции ("FT_ReadEE").
С ошибкой "E2066 Missing operator or semicolon". А если ее отключить, то компилируется, но соответственно не читает ФТ-ху. То-ли переменные надо как-то по особому обзывать, то-ли я чего-то еще не знаю.
Ткните в конкретное название исходника, который считывает еепром через функцию "FT_ReadEE". Буду премного благодарен. Просто я только начал изучать программирование, и пока слабо знаю только Дельфи. С другими языками очень сложно разбираться.witia03 писал(а):на офф ... исходники
Код: Выделить всё
//Это уже было в готовом исходнике-----------------------
[color=#00BF00]function FT_ReadEE(ftHandle:DWord; WordAddr:DWord; WordRead:Pointer):FT_Result; stdcall; External FT_DLL_Name name 'FT_ReadEE';
. .
. .
//------------------------------------------------------------------------
procedure TForm1.FT_ReadEEClick(Sender: TObject);
var
Addr:dword;
EEReadW:word;
begin
//------------------------------------------------
//Здесь открываю порт
//-----------------------------------------------
Addr:=$10; //Допустим адрес $10 считываю
Res:=FT_ReadEE(FT_Handle,Addr,@EEReadW); Останавливается компиллятор здесь
if Res<>0 then // <>
begin //Если не прочлась EEPROM
MessageDlg('FT_ReadEЕ не прочлась ' + DeviceDescription,mtInformation,[mbOK],0);
Exit;
end;
ShowMessage('EEReadW='+inttohex(ord(EEReadW),4));
//---------------------------------------------------
//Здесь закрываю порт
//--------------------------------------------------
end;