Поиск:

Ответ в темуСоздание новой темы Создание опроса
> COM порт не принимает 11h, 13h 
V
    Опции темы
ZPavel
Дата 1.4.2007, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



Я пишу для микроконтроллеров. Но пришлось написать и программу для компьютера, хоть я почти и не понимаю в C++. Она должна передавать и принимать данный от микроконтроллера через COM порт. Вставил чужой код, который должен принимать данные с COM порта, а он не пропускает коды 11h и13h. Я понимаю, что это символы перевода каретки, но сам исправить положение не могу. Помогите, кто знает.

Код

//Функция таймера. По окончанию счета таймера производится считывание байтов из буфера
//порта до тех пор, пока число принятых байт не станет равным нулю.
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
unsigned char RecByte;  //Переменная для принятого байта
unsigned long int    NumByteRead;//Переменная для числа принятых байт. Заполняется функцией
                                 //ReadFile.
LPDWORD lpNumberOfBytesWritten=&NumByteRead;
LPVOID lpBuffer1=&RecByte;

NumByteRead=1;  //Записать какое-нибудь не нулевое значение


        while (NumByteRead)
        {//Считывать байты до тех пор, пока в буфере ничего не останется
ReadFile(hCom, lpBuffer1, 1, lpNumberOfBytesWritten, NULL);
         if (NumByteRead!=0)
            {
             if (RecByte == 255)    //проверить, может это пришеол ответ
                 Application->MessageBox("Передача завершена.", "Информация", MB_OK);
             else                   //нет, это не ответ
                 Memo1->Text = (Memo1->Text) + caserbyte(RecByte);
             }
        }
}


Это сообщение отредактировал(а) ZPavel - 1.4.2007, 18:58
PM MAIL   Вверх
ZPavel
Дата 2.4.2007, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



Помогите кто нибуть, пожалуйста.
PM MAIL   Вверх
pandrew
Дата 3.4.2007, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 27.3.2006

Репутация: 3
Всего: 3



Вызов ReadFile можно записать проще:
Код

DWORD    NumByteRead;
ReadFile(hCom, (LPVOID)&RecByte, 1, &NumByteRead, NULL);

Цитата
а он не пропускает коды 11h и13h

Я не знаю, что делает функция caserbyte, возможно эти символы просто не отображаются в Memo.
Поставь breakpoint на ReadFile и смотри значение RecByte в отладчике.
PM MAIL   Вверх
ZPavel
Дата 3.4.2007, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



Проверил 
Код

DWORD    NumByteRead;
ReadFile(hCom, (LPVOID)&RecByte, 1, &NumByteRead, NULL);


аналогично, RecByte значений 11h, 13h не получает.
PM MAIL   Вверх
pandrew
Дата 4.4.2007, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 27.3.2006

Репутация: 3
Всего: 3



Цитата(ZPavel @  3.4.2007,  19:34 Найти цитируемый пост)
аналогично, RecByte значений 11h, 13h не получает. 
Может открыл файл как-то не так. Поверь на слово: спокойно можно гнать любые байты через RS232 в любом количестве.

PM MAIL   Вверх
_voron
Дата 5.4.2007, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.6.2004

Репутация: нет
Всего: нет



Символы перевода каретки это 10 и 13, в шестнадцатеричном виде 0xA и 0xD, соответственно.

И вообще, читать данные лучше в асинхронном режиме.
PM MAIL   Вверх
Aline
Дата 5.4.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



А мы использовали компонент ApdComPort - просто и удобно работать с ним
PM MAIL   Вверх
Ivan.
Дата 7.4.2007, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 2.11.2004

Репутация: нет
Всего: 2



Я пользуюсь компонентой TComPort. Визуальная компонента, событийная система, очень удобно.


--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
ZPavel
Дата 7.4.2007, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



Цитата(Aline @ 5.4.2007,  12:57)
А мы использовали компонент ApdComPort - просто и удобно работать с ним

а где его взять, этот Ваш ApdComPort
PM MAIL   Вверх
ZPavel
Дата 8.4.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



Цитата(Ivan. @ 7.4.2007,  12:44)
Я пользуюсь компонентой TComPort. Визуальная компонента, событийная система, очень удобно.

Поискал в интернете tcomport, и нашел только за деньги, что делать, где найти даром? И еще, есть ли, описание tcomport на русском?
PM MAIL   Вверх
pandrew
Дата 9.4.2007, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 27.3.2006

Репутация: 3
Всего: 3



Цитата(ZPavel @  7.4.2007,  21:13 Найти цитируемый пост)
а где его взять, этот Ваш ApdComPort 

Как ищем: смотри здесь

PM MAIL   Вверх
ZPavel
Дата 11.4.2007, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



Вот пример реботы с ком портом, можете посмотреть, маленький, говый проект. Я брал его за основу. И он не принимает эти коды, почему. Может кто-то поймет по реальному примеру.

Присоединённый файл ( Кол-во скачиваний: 28 )
Присоединённый файл  rs232cpp.zip 7,34 Kb
PM MAIL   Вверх
ZPavel
Дата 13.4.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



Что, никто не в состоянии понять куда деваются 11h, 13h, в примере?
PM MAIL   Вверх
Usper
Дата 13.4.2007, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: 15
Всего: 15



Если ты ничего не получаешь на ком порт, может быть туда ничего и не приходит?  smile А если серьёзно, что означет, что эти байты не приходят? Что ты ожидаешь от своего куска кода (в первом посте)?
Для тестирования подобного рода программ рекомендую связку программ Virtual Serial Ports Driver XP от Eltima Software (эмулирует пару или даже больше, если требуется ком портов, соединных нуль модемным кабелем) и какую нибудь терминальную прогу (я юзаю Com watcher Дмитрия Васильева) которая просто принимает и отсылает на ком порт байты.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
ZPavel
Дата 14.4.2007, 07:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



Да я так и делаю, на 1 сом порт свою прогу, на 2 сом порт терминальную, и нуль-модемный кабель. Это именно моя прога не принимает 11н, 13н. Тот пример, что я выложил, я брал за основу его, он  на функциях api, ведет себя аналогично. Я думаю, что наверно никто раньше не обращал внимание на то, что функция API ReadFile, не пропускае парочку кодов. Или тогда дайте кто нибуть готовый пример, где пропускает все коды.
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.2721 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.