|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.08.2010, 16:48 | #1 |
Пользователь
Регистрация: 03.08.2010
Сообщений: 11
|
Чтение данных с COM порта 232
Столкнуля с такой проблемой. Пишу прогу на С++ Билдер 6 и требуется считать данные с СОМ порта JS232 кажется. Как это можно реализовать? Опишите по возможности весь процесс. Заранее благодарю.
|
11.08.2010, 16:56 | #2 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
весь процесс в MSDN ...из книжек: "Программирование аппаратных средств ПК" и множество других справочников.
...из форума, пользуемся поиском 1 2
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
11.08.2010, 19:31 | #3 |
Форумчанин
Регистрация: 28.01.2010
Сообщений: 224
|
Уважаемый, действительно не так давно мне лично по этому вапросу помогли но по порту ЛПТ. Приведу листинг для билдера описан как класс с выводом 1 байта,какраз для СОМ порта. Если хочеш измениш да и провериш. Если смогёш то кинь личное сообшение с перекомпилированным кодом, да и что у тебя из этого получилось тоже опиши пожалуста....
Оформиш код как расширение .cpp Код:
всему свое время как зиме и весне
и каждому солнцу свой неба кусок Последний раз редактировалось Assemblerru; 11.08.2010 в 19:35. |
30.08.2010, 10:08 | #4 |
Пользователь
Регистрация: 03.08.2010
Сообщений: 11
|
С данным кодом считать нормально не получилось. Сделал по-своему:
HANDLE hCom = CreateFile("Com1",GENERIC_READ | GENERIC_WRITE,0,NULL, OPEN_EXISTING, 0, NULL); if( hCom == INVALID_HANDLE_VALUE ) { ShowMessage("Com port error"); CloseHandle(hCom); } //if ( hCom == INVALID_HANDLE_VALUE ) else { DCB dcb; GetCommState(hCom, &dcb); dcb.BaudRate = CBR_9600; dcb.fParity = false; dcb.ByteSize = 8; dcb.Parity = EVENPARITY; dcb.StopBits = ONESTOPBIT ; SetCommState(hCom,&dcb); DWORD feedback = 0; char buf[32]; ReadFile(hCom, buf, sizeof(buf), &feedback, NULL); CloseHandle(hCom); } Считывание происходит в массив char buf[32]. |
01.09.2010, 09:42 | #5 |
Пользователь
Регистрация: 03.08.2010
Сообщений: 11
|
В предыдущем сообщении я выложил отрывок своего кода для считывания данных с ком-порта RS232. Все работает правильно, но очень медленно. Отрывок
ReadFile(hCom, buf, sizeof(buf), &feedback, NULL); CloseHandle(hCom); выполняется от 0,3 до 1 секунды!!! Кто-то знает почему так долго? Остальная часть кода(поиск нужной части полученных данных, перевод их в реальное число и построение графика) выполняется за 0,012с, так что тугость машины отбрасываем. Это связано с тем что это ком-порт? Или функция рид файл такая тугая? Есть ли какая-нибудь альтернатива(похожая функция или надо на ЮСБ перепаивать)? |
01.09.2010, 09:51 | #6 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
...на это влияют таймауты, размер буфера и установленная скорость ...поставь 115200, сравни
...USB даст большую скорость, PCI еще большую
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation Последний раз редактировалось raxp; 01.09.2010 в 09:53. |
01.09.2010, 09:59 | #7 |
Пользователь
Регистрация: 24.08.2010
Сообщений: 34
|
Тут уже всё написали конечно, просто выложу этот класс, может кому будет полезно.
|
01.09.2010, 11:25 | #8 |
Пользователь
Регистрация: 03.08.2010
Сообщений: 11
|
Поставить какую-либо скорость кроме 9600 не представляется возможным, т.к. весовой терминал, с которого происходит считывание через ком, расчитан только на эту скорость...((( Интересно послушать мнения на счет альтернативы для функции ридфайл...
|
02.09.2010, 09:52 | #9 |
Пользователь
Регистрация: 03.08.2010
Сообщений: 11
|
А как узнать длительность таймаута?
|
02.09.2010, 09:59 | #10 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
ReadFile() и так API функция ...торможение считывания на компе также может быть связано с наличием таких процессов как антивирус, вирус, видео и т.п. загружающие процессор и железо вещи, также и настройкой самой оси.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чтение com-порта на java | danyamaster | Фриланс | 3 | 15.02.2013 14:09 |
Асинхронная обработка принятых данных от порта | osandr | Общие вопросы Delphi | 3 | 02.06.2010 09:32 |
чтение с COM-порта в отдельном потоке не получается | lexluter1988 | Общие вопросы .NET | 2 | 25.05.2010 20:40 |
Приём данных с com порта | kyc0k | Помощь студентам | 3 | 28.03.2008 15:04 |
Как получить данные с COM-порта или другого любого порта? | DeLure | Общие вопросы C/C++ | 5 | 20.09.2007 00:50 |