Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 443
1

Передача строк и символов по COM -порту

26.06.2018, 06:24. Просмотров 226. Ответов 8
Метки нет (Все метки)

Ребят, подскажите пож.

создаю строку

C
1
char chOne[] = "1";
Отправляю по COM-порту и в терминале получаю "1C0". Откуда этот С0 появляется? как от него избавиться, чтобы получить 1 ??

Спасибо!

Добавлено через 2 минуты
У меня версия, что Windows работает с Юникодом, а он вроде 2 байта. Т.е. он к моему байту 1 прибавляет фигню всякую. Нет ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2018, 06:24
Ответы с готовыми решениями:

Получить из данных строк новую, объединив N первых символов строки S1 и N2 последних символов строки S2
Здравствуйте, не могли бы вы помочь мне с этим заданием? Даны два числа: N1 и...

Получить из строк новую, объединив N1 первых символов строки S1 и N2 последних символов строки S2
Ребят, помогите решить пожалуйста. Заранее спасибо. Даны два числа: N1 и N2, и...

Вывод, передача и хранение строк
Собственно, вопрос следующий: Необходимо считать строку и изменить её....

Передача указателя на динамический массив строк в функцию
Доброе утро! Динамически выделяю память под массив строк. char **f =...

Передача по COM-порту
Доборого времени суток! имеется задачка по Паскалю: Реализация программы на...

8
Rius
Эксперт .NET
5282 / 3475 / 841
Регистрация: 25.05.2015
Сообщений: 10,599
Записей в блоге: 11
Завершенные тесты: 4
26.06.2018, 07:48 2
Код сначала покажите, которым отправляете.
0
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 443
26.06.2018, 08:08  [ТС] 3
вот так

C
1
BOOL iRet = WriteFile (hSerial,data,dwSize,&dwBytesWritten,NULL);
В data подставляется мой char chOne.

C
1
2
3
4
5
6
7
BOOL WriteFile(
  HANDLE       hFile,
  LPCVOID      lpBuffer,
  DWORD        nNumberOfBytesToWrite,
  LPDWORD      lpNumberOfBytesWritten,
  LPOVERLAPPED lpOverlapped
);
Оу.. Тут LPCVOID


An LPCVOID is a 32-bit pointer to a constant of any type.

This type is declared as follows:

typedef const void* LPCVOID;
Может в этом проблема ?
0
Rius
Эксперт .NET
5282 / 3475 / 841
Регистрация: 25.05.2015
Сообщений: 10,599
Записей в блоге: 11
Завершенные тесты: 4
26.06.2018, 08:23 4
Показанное ни о чём не говорит.
Цитата Сообщение от ilja123 Посмотреть сообщение
C++
1
BOOL iRet = WriteFile (hSerial,data,dwSize,&dwBytesWritten,NULL);
data и dwSize откуда и как получаются, как передаются сюда?
1
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 443
26.06.2018, 18:53  [ТС] 5
Rius, я вечером, после работы отпишусь.

Добавлено через 9 часов 49 минут
Rius,

Вот

C
1
2
3
4
5
6
7
 void send(char data[]){
       // char data[] = str;
        DWORD dwSize = sizeof(data);
        DWORD dwBytesWritten;
 
        BOOL iRet = WriteFile(hPort, data, dwSize, &dwBytesWritten, NULL);
    }
Добавлено через 4 минуты
я сейчас изменил на
C
1
DWORD dwSize = sizeof(data) - 2;
Но эт какой-то кастыль получается Откуда все таки эти 2 байта лезут????

Добавлено через 19 минут
У меня не 3, а 4 получается вместе с 0 терминатором. Т.е. у меня с порта приходит: 1<0>C0. я вот сделал sizeof(data)-2 и теперь приходит 1<0>. все, как надо. Может эти dwSize что-то пихает? этож 32 бита вроде. Аааааааааааааааааааааа
32 бита этож 8x4 бита!. я засунул 8 бит. остальные он приписал. Так получается? Хыыыы Глюк Виндовз чтль....
0
Megageorgio
78 / 80 / 66
Регистрация: 03.04.2017
Сообщений: 216
Завершенные тесты: 1
26.06.2018, 19:02 6
ilja123, если не ошибаюсь, то в функцию ты передаешь указатель на строку и в итоге sizeof выдает размер указателя. Юзай strlen или что-то в этом духе
2
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 443
26.06.2018, 19:09  [ТС] 7
На досуге над будет разобраться. Прога работает (с костылем). Всем спасибо!
0
Megageorgio
78 / 80 / 66
Регистрация: 03.04.2017
Сообщений: 216
Завершенные тесты: 1
26.06.2018, 19:12 8
ilja123, а ты попробуй тогда побольше строку засунуть, и глянешь как раз, будет работать с sizeof или нет
0
Rius
Эксперт .NET
5282 / 3475 / 841
Регистрация: 25.05.2015
Сообщений: 10,599
Записей в блоге: 11
Завершенные тесты: 4
26.06.2018, 21:05 9
Цитата Сообщение от Megageorgio Посмотреть сообщение
если не ошибаюсь, то в функцию ты передаешь указатель на строку и в итоге sizeof выдает размер указателя. Юзай strlen или что-то в этом духе
Правильно.

Цитата Сообщение от ilja123 Посмотреть сообщение
Откуда все таки эти 2 байта лезут????
Мусор за пределами строки, выход за пределы массива.
0
26.06.2018, 21:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2018, 21:05

Передача char по com порту
учусь работать с com портом, может кто-нибудь написать простой пример передачи...

Передача данных по com порту
Добрый день! Написал программу открытия и передачи данных по com порту....

Передача данных по LPT порту
Всем привет! Передо мной стоит задача: Необходимо передать файл по средствам...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru