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

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

Сообщение tviktor »

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

Сообщение Callous »

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

Сообщение sachok »

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

Сообщение tviktor »

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

Сообщение sachok »

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

Сообщение tviktor »

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

Сообщение Rushack »

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

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

Сообщение tviktor »

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

Сообщение VoLT »

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

Сообщение Rushack »

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

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

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

Сообщение tviktor »

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

Сообщение sachok »

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

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

Сообщение mr_smit »

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

Я его во многих проектах использую, багов замечено не было
А как выставить произвольную скорость COM порта??? Например 250000 бит/сек. Чтобы при кварце 16 МГц погрешность USART была 0
Нельзя всё знать, достаточно понимать.
Встал на лапы
Сообщения: 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)
Открыл глаза
Сообщения: 69
Зарегистрирован: Вт апр 05, 2011 12:46:14

Сообщение Magadan69 »

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

Сообщение witia03 »

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

Сообщение 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;
Ответить

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