FT232 и программа на Delphi

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
tviktor
Родился
Сообщения: 12
Зарегистрирован: Пн дек 14, 2009 07:06:51

FT232 и программа на Delphi

Сообщение tviktor »

Народ помогите написать программу на делфи для приема и передачи данных через микруху FT232. Если есть у кого какие нибуть исходники буду очень рад.
Аватара пользователя
Callous
Встал на лапы
Сообщения: 115
Зарегистрирован: Вс апр 20, 2008 16:54:13
Откуда: Украина, Чернигов

Сообщение Callous »

не совсем понятно что значит для FT232, просто при подключении устройства к USB через FT232, оно будет подключено к com порт.
А программа пишется как для com порта просто в устройствах надо уточнить его номер.
вот тут посмотри, но там на сях все...
http://www.pcports.ru/Articles.php
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Сообщение sachok »

Я писал такую програмулину для теста FT232 пишем строку отправляем и смотрем на то что пришло.
Я не Сашок!!!
tviktor
Родился
Сообщения: 12
Зарегистрирован: Пн дек 14, 2009 07:06:51

Сообщение tviktor »

Необходима прога работы с ком портом который получается при подключении FT232. Прогу я написал но она на передачу работает но данные не соответствуют(отправленные с компа и полученные с микрухи) и с приемом вообще плохо , ничего принять не могу, может кто на исходники глянет и пнет в нужном направлении.
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Сообщение sachok »

http://radiokot.ru/forum/viewtopic.php?p=255809#255809 тут я выкладывал свою програмку, на выходе FT232 просто замыкал Rx и Tx. Всё работало
Я не Сашок!!!
tviktor
Родился
Сообщения: 12
Зарегистрирован: Пн дек 14, 2009 07:06:51

Сообщение tviktor »

По данной сылке я ненашел выложенной программы, можно в этом разделе выложить.
Аватара пользователя
Rushack
Встал на лапы
Сообщения: 92
Зарегистрирован: Пн ноя 09, 2009 01:04:57
Контактная информация:

Сообщение Rushack »

tviktor, скидывай прогу, я посмотрю. Есть примерчик, выложу вечером.
Там в принципе просто, либо работаешь по событию (приход на ком порт :) ), либо таймером смотришь, появилось что или нет.
Ты должен сделать добро из зла, потому что его больше не из чего сделать.

Р.П. Уоррен
tviktor
Родился
Сообщения: 12
Зарегистрирован: Пн дек 14, 2009 07:06:51

Сообщение tviktor »

Вот исходник подскажите что не так.
Вложения
PortUnit.zip
(1.26 КБ) 513 скачиваний
Аватара пользователя
VoLT
Грызет канифоль
Сообщения: 265
Зарегистрирован: Вс июн 08, 2008 23:39:51
Контактная информация:

Сообщение VoLT »

sachok, твои программки больны индюком народ будте бдительны :))
Аватара пользователя
Rushack
Встал на лапы
Сообщения: 92
Зарегистрирован: Пн ноя 09, 2009 01:04:57
Контактная информация:

Сообщение Rushack »

tviktor, Прицепляй к своей программе Com.pas (во вложениях)
и можешь свободно работать с портом )

Я его во многих проектах использую, багов замечено не было
Вложения
Com.pas.zip
Для работы с портом
(1.75 КБ) 565 скачиваний
send.zip
Пример.
(6.22 КБ) 562 скачивания
Ты должен сделать добро из зла, потому что его больше не из чего сделать.

Р.П. Уоррен
tviktor
Родился
Сообщения: 12
Зарегистрирован: Пн дек 14, 2009 07:06:51

Сообщение tviktor »

VoLT писал(а):sachok, твои программки больны индюком народ будте бдительны :))

Поясните пажулуйста что это значит (больны индюком)
Аватара пользователя
VoLT
Грызет канифоль
Сообщения: 265
Зарегистрирован: Вс июн 08, 2008 23:39:51
Контактная информация:

Сообщение VoLT »

Цитата взята с http://www.kaspersky.ru/news?id=207733037

PS У себя нашёл ещё в августе
"Лаборатория Касперского" обнаружила вирус, заражающий 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: его там НЕТ!
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Сообщение sachok »

Не знаю чем или кем болины моъ програмки. но у меня NOD32 v4 ничего в них не нашол. Возможно это что то слишком специфичное... У меня всё работает.
Я не Сашок!!!
vs145
Родился
Сообщения: 13
Зарегистрирован: Вт сен 15, 2009 09:52:17

Ft232r

Сообщение vs145 »

Приобрёл FT232RL. И образовался вопрос. Как с ней работать в режиме bitbang? Дополнительные ножки дёргаю без вопросов. А остальные - не получается...

Программку писал на Delphi.

Код: Выделить всё

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('Передано успешно')


После этого на ножках как был 0, так и остался....
vs145
Родился
Сообщения: 13
Зарегистрирован: Вт сен 15, 2009 09:52:17

Нашёл ответ...

Сообщение vs145 »

Сам дошёл...

Код: Выделить всё

if FT_OK = Set_USB_Device_BitMode(0, 1) then

Если я хочу поставить все ножки на выход, то надо делать так:

Код: Выделить всё

if FT_OK = Set_USB_Device_BitMode($FF, 1) then

А как в первой строке - это все ножки на вход.
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Сообщение mr_smit »

Rushack писал(а):tviktor, Прицепляй к своей программе Com.pas (во вложениях)
и можешь свободно работать с портом )

Я его во многих проектах использую, багов замечено не было


А как выставить произвольную скорость COM порта??? Например 250000 бит/сек. Чтобы при кварце 16 МГц погрешность USART была 0
Нельзя всё знать, достаточно понимать.
Digikey
Встал на лапы
Сообщения: 90
Зарегистрирован: Пн мар 08, 2010 02:59:04

Сообщение Digikey »

mr_smit писал(а):А как выставить произвольную скорость COM порта???


- Если из программы, то функцией
FT_SetDivisor(FT_Handle ftHandle, USHORT usDivisor) из ftd2xx.dll
(об этом в "D2XX Programmer's Guide" D2XXPG34.pdf)

- Если модификацией свойств виртуального порта, то редактированием
соответствующей секции FTDIPORT.INF
(об этом в "AN232B-05 Configuring FT232R,FT2232 and FT232B Baud Rates" AN232B-05_BaudRates.pdf)
Magadan69
Открыл глаза
Сообщения: 69
Зарегистрирован: Вт апр 05, 2011 12:46:14

Re: программа на delphi для FT232

Сообщение Magadan69 »

Не бейте сразу камнями. Дайте кто-нибудь готовый примерчик, для Делфи как считать из FT232R ЕЕПРОМ в массив (а лучше сразу в бин-файл).
Просто взял за базу исходник готовой программы. Переделал под свои нужды. Юсер Арию писать-читать получилось. А вот функцией "FT_ReadEE", никак не могу воспользоваться. В даташите нет примера на нее. А также на "FT_WriteEE".
Никак не компилируется проект, постоянно останавливается на компиляции этой функции ("FT_ReadEE").
С ошибкой "E2066 Missing operator or semicolon". А если ее отключить, то компилируется, но соответственно не читает ФТ-ху. То-ли переменные надо как-то по особому обзывать, то-ли я чего-то еще не знаю.
witia03
Вымогатель припоя
Сообщения: 512
Зарегистрирован: Вс фев 13, 2011 20:51:21
Откуда: Спб

Re: программа на delphi для FT232

Сообщение witia03 »

Magadan69 писал(а):Не бейте сразу камнями. Дайте кто-нибудь готовый примерчик, для Делфи как считать из FT232R ЕЕПРОМ в массив (а лучше сразу в бин-файл).
Просто взял за базу исходник готовой программы. Переделал под свои нужды. Юсер Арию писать-читать получилось. А вот функцией "FT_ReadEE", никак не могу воспользоваться. В даташите нет примера на нее. А также на "FT_WriteEE".
Никак не компилируется проект, постоянно останавливается на компиляции этой функции ("FT_ReadEE").
С ошибкой "E2066 Missing operator or semicolon". А если ее отключить, то компилируется, но соответственно не читает ФТ-ху. То-ли переменные надо как-то по особому обзывать, то-ли я чего-то еще не знаю.

на офф сайте есть все исходники
Magadan69
Открыл глаза
Сообщения: 69
Зарегистрирован: Вт апр 05, 2011 12:46:14

Re: программа на delphi для FT232

Сообщение Magadan69 »

witia03 писал(а):на офф ... исходники

Ткните в конкретное название исходника, который считывает еепром через функцию "FT_ReadEE". Буду премного благодарен. Просто я только начал изучать программирование, и пока слабо знаю только Дельфи. С другими языками очень сложно разбираться.
Извините, если посчитаете наглостью.
Или объясните в чем я ошибаюсь?

Код: Выделить всё

//Это уже было в готовом исходнике-----------------------
[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;
Ответить

Вернуться в «Интеграция с ПК»