Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 24.03.2010, 16:28  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Был вариант на микрочип су - девайс ставится именно на то место, которое Вы ему уготовили
http://www.microchip.su/showthread.p...EF%F2%EE%F0%E5
Но это АСМ, я FTDI не пробовал.
Реклама:
__________________
warez

Последний раз редактировалось urry; 24.03.2010 в 23:47.
urry вне форума  
Непрочитано 24.03.2010, 18:31  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Сообщение от urry Посмотреть сообщение
под линуксом, забирал данные через левый gsm шлюз
Вроде не об этом идёт разговор ... Но зато теперь все видят, что urry очень крут !

Сообщение от tusya83 Посмотреть сообщение
не получается программно определить номер ком-порта, на который встала микросхема
Перебирайте все доступные ком-порты, посылая запросы, пока не получите нужный отклик от устройства.
И вообще, надо определиться, что будет использоваться: Windows API для ком-порта или FTDI функции из FTD2XX.DLL
Yurkin2007 вне форума  
Непрочитано 24.03.2010, 19:53  
tusya83
Частый гость
 
Регистрация: 09.03.2010
Сообщений: 15
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
tusya83 на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Понятно. Большое спасибо за ответы. Будем добивать d2xx
tusya83 вне форума  
Непрочитано 24.03.2010, 22:28  
awtoap
Прописка
 
Регистрация: 11.04.2006
Сообщений: 197
Сказал спасибо: 80
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
awtoap на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Я чет не понял...почему у Вас с потоками не получается...у меня так все работает. Создаем поток и там опрашиваем функцию о наличии в буфере микры для нас байтиков. Если есть, то забираем с помощью FT_Read... делов то.

Вообщем сейчас куски повыхватываю...разбирайтесь сами...писано на Delphi:

function RXThreadFunc(Owner: TDMXRepeater): Integer;
begin
Result:= 0;
Owner.fKillRXThread:= False;
while not Owner.fKillRXThread and (SleepEX(1, False) = 0) do
begin
WaitForSingleObject(Owner.fRXEvent, INFINITE);
Owner.ThreadProc_RX;
end;
end;

function TXThreadFunc(Owner: TDMXRepeater): Integer;
begin
Result:= 0;
Owner.fKillTXThread:= False;
while not Owner.fKillTXThread and (SleepEX(1, False) = 0) do Owner.ThreadProc_TX;
end;


Вызывается из потока:
procedure TDMXRepeater.ThreadProc_RX;
var
TX, RX, Event: Cardinal;
Ret, rBytes: Integer;
RcvCmd, RcvData: Byte;
Change: Boolean;
begin
Ret:= FT_GetStatus(fDevHandle, @RX, @TX, @Event);
if (Ret ‹› 0) then Exit;

Ret:= FT_Read(fDevHandle, fRcvBuffer, RX, @rBytes);
if (Ret ‹› FT_OK) or (RX ‹› rBytes) then Exit;
end;


Инициализация (функции API и FTDI):
Res:= FT_Open(n, @fDevHandle); //тут N выбирается из подходящего по списку чипа
if Res ‹› FT_OK then
begin
Result:= srDeviceNotFound;
Exit;
end;
Res:= FT_ResetDevice(fDevHandle);
Res:= FT_Purge(fDevHandle, FT_Purge_RX or FT_Purge_TX);
Res:= FT_SetUSBParameters(fDevHandle, 512, 0);
fRXThrdHandle:= BeginThread(nil, 0, @RXThreadFunc, Pointer(Self), Create_Suspended, fRXThrdID);
if fRXThrdHandle = 0 then
begin
Result:= srUnknownError;
Exit;
end;

fTXThrdHandle:= BeginThread(nil, 0, @TXThreadFunc, Pointer(Self), Create_Suspended, fTXThrdID);
if fTXThrdHandle = 0 then
begin
Result:= srUnknownError;
Exit;
end;

fRXEvent:= CreateEvent(nil, False, False, '');
Res:= FT_SetEventNotification(fDevHandle, FT_Event_RXChar, fRXEvent);

SetThreadPriority(fRXThrdHandle, Thread_Priority_HIGHEST);
SetThreadPriority(fTXThrdHandle, Thread_Priority_HIGHEST);

ResumeThread(fRXThrdHandle);
ResumeThread(fTXThrdHandle);

Дерзайте...
awtoap вне форума  
Сказали "Спасибо" awtoap
tusya83 (24.03.2010)
Непрочитано 24.03.2010, 23:56  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Сообщение от Yurkin2007 Посмотреть сообщение
Сообщение от urry Посмотреть сообщение
под линуксом, забирал данные через левый gsm шлюз
Вроде не об этом идёт разговор ... Но зато теперь все видят, что urry очень крут !
Я извиняюсь за флуд - сейчас работаю в области, далекой от МК - но не за свое выражение о вредных советах. Дальнейшие разборки - в личку.
В делфи не пишу, в си++ где-то так
Код:
1.	 hPort = CreateFile(   PortName,
2.	                        GENERIC_READ | GENERIC_WRITE,
3.	                        0,
4.	                        NULL,
5.	                        OPEN_EXISTING,
6.	                        FILE_FLAG_OVERLAPPED | FILE_ATTRIBUTE_SYSTEM,
7.	                        NULL);
8.	 
9.	  if (hPort == INVALID_HANDLE_VALUE)
10.	   {
11.	    DumpError("CreateFile");
12.	    IsError = true;
13.	    return;
14.	   }
15.	 
16.	  if (!PurgeComm(hPort, PURGE_RXCLEAR | PURGE_TXCLEAR))
17.	   {
18.	    DumpError("PurgeComm");
19.	    IsError = true;
20.	    return;
21.	   }
22.	 
23.	  DCB dcb;
24.	  if (!GetCommState(hPort, &dcb))
25.	   {
26.	    DumpError("GetCommState");
27.	    IsError = true;
28.	    return;
29.	   }
30.	  dcb.DCBlength         = sizeof(dcb);
31.	  dcb.BaudRate          = dwBaudRate;
32.	  dcb.fBinary           = true;
33.	  dcb.fParity           = false;
34.	  dcb.fOutxCtsFlow      = false;
35.	  dcb.fOutxDsrFlow      = false;
36.	  dcb.fDtrControl       = DTR_CONTROL_ENABLE;
37.	  dcb.fDsrSensitivity   = false;
38.	  dcb.fTXContinueOnXoff = false;
39.	  dcb.fOutX             = false;
40.	  dcb.fInX              = false;
41.	  dcb.fNull             = false;
42.	  dcb.fRtsControl       = RTS_CONTROL_ENABLE;
43.	  dcb.fAbort:: onerror ::     = true;
44.	  dcb.ErrorChar         = 0xFF;
45.	  dcb.XonLim            = 2048;
46.	  dcb.XoffLim           = 512;
47.	  dcb.XonChar           = 17;
48.	  dcb.XoffChar          = 19;
49.	  dcb.EofChar           = 0;
50.	  dcb.EvtChar           = 0;
51.	  dcb.ByteSize          = 8;
52.	  dcb.Parity            = NOPARITY;
53.	  dcb.StopBits          = ONESTOPBIT;
54.	  if (!SetCommState(hPort,&dcb))
55.	   {
56.	    DumpError("SetCommState");
57.	    IsError = true;
58.	    return;
59.	   }
60.	 
61.	  if (!SetupComm(hPort,2048,0))
62.	   {
63.	    DumpError("SetupComm");
64.	    IsError = true;
65.	    return;
66.	   }
67.	 
68.	  COMMTIMEOUTS cto;
69.	  if (!GetCommTimeouts(hPort,&cto))
70.	   {
71.	    DumpError("GetCommTimeouts");
72.	    IsError = true;
73.	    return;
74.	   }
75.	  cto.ReadIntervalTimeout               = 0;
76.	  cto.ReadTotalTimeoutMultiplier        = 0;
77.	  cto.ReadTotalTimeoutConstant          = 0;
78.	  cto.WriteTotalTimeoutMultiplier       = 0;
79.	  cto.WriteTotalTimeoutConstant         = 0;
80.	  if (!SetCommTimeouts(hPort,&cto))
81.	   {
82.	    DumpError("SetCommTimeouts");
83.	    IsError = true;
84.	    return;
85.	   }
86.	 
87.	  if (!SetCommMask(hPort,EV_RXCHAR))
88.	   {
89.	    DumpError("SetCommMask");
90.	    IsError = true;
91.	    return;
92.	   }
93.	 
94.	  COMMCONFIG ccfg;
95.	  unsigned long cfgsize = sizeof(ccfg);
96.	  if (!GetCommConfig(hPort,&ccfg,&cfgsize))
97.	   {
98.	    DumpError("GetCommConfig");
99.	    IsError = true;
100.	    return;
101.	   }
102.	  ccfg.dwSize = cfgsize;
103.	  ccfg.dcb                      = dcb;
104.	  ccfg.dwProviderSubType        = PST_RS232;
105.	  if (!SetCommConfig(hPort,&ccfg,cfgsize))
106.	   {
107.	    DumpError("SetCommConfig");
108.	    IsError = true;
109.	    return;
110.	   }
111.	//----------------------------------------------------- 
112.	  hEvtRead = CreateEvent(NULL,false,false,NULL);
113.	  hEvtWrite = CreateEvent(NULL,false,false,NULL);
114.	  memset(&ovRead,0,sizeof(ovRead));
115.	  memset(&ovWrite,0,sizeof(ovWrite));
116.	  ovRead.hEvent = hEvtRead;
117.	  ovWrite.hEvent = hEvtWrite;
 //---------------------------------------------------------
// чтение
	   char buf[1000];
	    int num;

	    ReadFile(hPort,buf,1,&num,ovRead);
	    if (WaitForSingleObject(ovRead-›hEvent, ‹таймаут› ) != WAIT_OBJECT_0)
	     {
	      PurgeComm(hPort, PURGE_RXABORT);
	      //не уложились в таймаут
	     }
// запись	 
   WriteFile(hPort,buf,bufsize,&num,ovWrite);
  if (WaitForSingleObject(ovWrite-›hEvent,‹таймаут записи›) != WAIT_OBJECT_0)
    {
     PurgeComm(hPort, PURGE_TXABORT);
     // не уложились в таймаут
    }
__________________
warez

Последний раз редактировалось urry; 25.03.2010 в 00:24.
urry вне форума  
Сказали "Спасибо" urry
tusya83 (25.03.2010)
Непрочитано 25.03.2010, 13:25  
tusya83
Частый гость
 
Регистрация: 09.03.2010
Сообщений: 15
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
tusya83 на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

awtoap,
urry, большое спасибо. Сначала помучаю еще чуток FTD2XX, если не пойдет, буду разбираться с API как предложил urry.
tusya83 вне форума  
Непрочитано 25.03.2010, 13:59  
GASCHE
Частый гость
 
Регистрация: 28.04.2007
Сообщений: 40
Сказал спасибо: 2
Сказали Спасибо 7 раз(а) в 5 сообщении(ях)
GASCHE на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Сообщение от tusya83 Посмотреть сообщение
подскажите пожалуйста.
Как правильно организовать постоянный мониторинг состояния порта, чтоб
Если пишите на Delphi посмотрите здесь - http://www.delphikingdom.ru/asp/view...catalogid=1126
GASCHE вне форума  
Непрочитано 25.03.2010, 14:09  
tusya83
Частый гость
 
Регистрация: 09.03.2010
Сообщений: 15
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
tusya83 на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Мне нужно на с++, но попробую разобраться
tusya83 вне форума  
Непрочитано 25.03.2010, 22:31  
awtoap
Прописка
 
Регистрация: 11.04.2006
Сообщений: 197
Сказал спасибо: 80
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
awtoap на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Я вам предложил на API (ищите одноименные функции в хелпе) без использования виртуального COM порта, а urry именно с COM портом. Максимальную скорость передачи данных получите только при работе с API функциями FTDI на прямую.
awtoap вне форума  
Непрочитано 01.04.2010, 18:33  
GASCHE
Частый гость
 
Регистрация: 28.04.2007
Сообщений: 40
Сказал спасибо: 2
Сказали Спасибо 7 раз(а) в 5 сообщении(ях)
GASCHE на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Сообщение от tusya83 Посмотреть сообщение
Мне нужно на c
http://www.piclist.ru/S-COM-THREAD-R...HREAD-RUS.html
GASCHE вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Решено] Третье Послание Человечеству lelkanet Отвлекитесь, эмбеддеры! 201 06.01.2010 00:33


Часовой пояс GMT +4, время: 04:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot