2011-01-10 3 views
2

Привет, я использую 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]); 
    } 
} 

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

ответ

0

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

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

+0

да пожалуйста, вы можете разместить код, – ajeet

+0

обыкновение попробовать и утверждают, что это, как у меня. Я получил это отсюда и принял его для моего приложения http://www.dreamincode.net/forums/topic/35775-serial-port-communication-in-c%23/ – Leon

1

Если бы я тебя, я хотел бы сделать следующее:

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

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

WriteFile() 
ReadFile() 
CreateFile() 

Вне зависимости от версии VS - опускать Мусор MSCOMM и использование файлов.

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

Смежные вопросы