Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
com-port, что не так, и код можно покритиковать
|
|||
|---|---|---|---|
|
#18+
Всем привет, ниже привожу листинг программы считывания 1 байта с ком-порта В аттаче прикрепил файл, там вопрос автор#include <windows.h> #include <stdio.h> #include <iostream.h> int main() { HANDLE Port; _COMMTIMEOUTS lpCT; DWORD mask; DCB dcb; OVERLAPPED over; //Открытие порта Port = CreateFile("COM1", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (Port == INVALID_HANDLE_VALUE) { cout << "COM Port have not access" << endl; } //Конфигурирование порта GetCommState(Port, &dcb); cout << "BaudRate:"<< dcb.BaudRate << endl; cout << "ByteSize:"<< (int)dcb.ByteSize << endl; cout << "Parity:"<< (int)dcb.Parity << endl; cout << "StopBits:"<< (int)dcb.StopBits << endl; dcb.BaudRate = CBR_115200; dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT; if (SetCommState(Port, &dcb) == false) { cout << "Configuring Error" << endl; } //Тайм-ауты GetCommTimeouts(Port,&lpCT); lpCT.ReadIntervalTimeout =1000; lpCT.ReadTotalTimeoutConstant = 200; lpCT.ReadTotalTimeoutMultiplier = 200; lpCT.WriteTotalTimeoutConstant = 200; lpCT.WriteTotalTimeoutMultiplier = 200; SetCommTimeouts(Port,&lpCT); //Установка маски SetCommMask(Port,EV_RXFLAG); //Очистка порта FlushFileBuffers(Port); //Ожидание поступления данных WaitCommEvent(Port,&mask,&over); //Прием данных char buf_in[1]; DWORD bc; ReadFile(Port,buf_in,1,&bc,NULL); cout << "Result:" << buf_in << endl; //Закрытие порта CloseHandle(Port); return 0; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 16:48 |
|
||
|
com-port, что не так, и код можно покритиковать
|
|||
|---|---|---|---|
|
#18+
sce, Ошибка в том что вы читаете один байт из порта, а пытаетесь вывести на экран целую строку (при выводе не указываете сколько символов вывести, а когда не указывается, выводится до встречи 0. В вашем случае, случайно через 5 байт обнаружился 0, а до него весь мусор был выведен, так как массив у вас всего один байт содержит). Это довольно элементарные вещи, читайте учебник. делайте так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 17:07 |
|
||
|
com-port, что не так, и код можно покритиковать
|
|||
|---|---|---|---|
|
#18+
sherzod_sce, Ошибка в том что вы читаете один байт из порта, а пытаетесь вывести на экран целую строку (при выводе не указываете сколько символов вывести, а когда не указывается, выводится до встречи 0. В вашем случае, случайно через 5 байт обнаружился 0, а до него весь мусор был выведен, так как массив у вас всего один байт содержит). Это довольно элементарные вещи, читайте учебник. делайте так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. спасибо сорри, второй день изучаю с++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 17:15 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38179163&tid=2020391]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
71ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 290ms |
| total: | 463ms |

| 0 / 0 |
