Получать байты от последовательного порта - PullRequest
2 голосов
/ 10 января 2011

Привет, я использую vc ++ 6.0 MSCOMM для последовательной связи. Мне нужно прочитать данные (4 байта) и отобразить их с последовательного порта.

ex: data format is:
>88 84 10 02   (4 bytes data from port)<br>
>C6 1E 10 02   (Received Data) but i have to display 88 84 but i am getting C6 and 1E.

Мой код:

VARIANT data;
BSTR k;
static char dbuff[4];
int dcount=0;
CString data;

if(m_mscom.GetCommEvent()==2) // Receiving data from port
{
    data=m_mscom.GetInput();
    k=data.bstrVal;
    dbuff[dcount] = char (k[0]);
    dcount++;

    if(dcount == 4)
    {
        dcount=0;
        data.Format ("%02X%02X%02X%02X", (unsigned char)dbuff[0], 
               (unsigned char)dbuff[1], (unsigned char)dbuff[2],
               (unsigned char)dbuff[3]);
    }
}

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

Ответы [ 2 ]

1 голос
/ 10 января 2011

На вашем месте я бы сделал следующее:

  • Перейти к новому компилятору - VS 2008 или 2010
  • Используйте реальный интерфейс - не COM / MSCOMM

Попробуйте посмотреть на:

WriteFile()
ReadFile()
CreateFile()

Независимо от версии VS - отбросьте мусор MSCOMM и используйте файловые дескрипторы.

Или, если вы настаиваете на COM-объекте, попробуйте поискать в Интернете C ++ и mscomm - как этот результат: http://www.edaboard.com/thread19993.html

0 голосов
/ 10 января 2011

Убедитесь, что вы используете правильное количество стоп-битов, поскольку вы можете получить перекос.Проверьте бит четности на ошибки передачи.

Недавно я использовал быстрый проект C # для чтения с последовательного порта.Можно опубликовать код, если вы хотите переключиться на C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...