|
0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 24
|
||||||
Конвертирование форматов, для СОМ порта17.05.2009, 17:07. Показов 4084. Ответов 18
Метки нет (Все метки)
Несудите строго, я только начинающий в С++ для компьютеров,
но умею программировать на Си для микроконтроллеров. Моя задача связать компьютер с микроконтроллером по СОМ порту... Вобщем возник вопрос, я взял пример работы с сом портом с этого форума, всё работает, приём и передача, но только когда вводиш данные в поля типа Эдит/Мемо, Мне нужно передовать/принимать значение переменных в 16ричной(Хекс) системе, и поместить их в переменную. Вот вырезки из кода...
постоянно выдаёт ошибку про типы переменных. Зарание благодарен за любую помощь или советы...
0
|
||||||
| 17.05.2009, 17:07 | |
|
Ответы с готовыми решениями:
18
От СОМ-порта к OpenGL Чтение и обработка данных из СОМ порта
|
|
0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 24
|
|
| 17.05.2009, 17:40 [ТС] | |
|
Втом что неполучается принятые данные хранить в переменных типа i; int ,
и выводить в 16ую систему, например если пришло FF то вывести 255, и немогу передать в порт значение 10(например) из i2.
0
|
|
|
|
|
| 17.05.2009, 19:16 | |
|
Ты же сказал, что всё это умеешь на Си делать. Какая в пень разница, на Си или на Си++ хранить переменную в int'е?
Про 16-ричную систему вообще ничего не понял. Система счисления - это форма записи и не более того. От системы счисления вообще не зависит набор битов, пришедших в порт. Просто пока ты конкретно и членораздельно не поставишь вопрос - внятного ответа ты не получишь > постоянно выдаёт ошибку про типы переменных. Кто выдаёт? Где выдаёт? Что выдаёт
0
|
|
|
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
|
|
| 17.05.2009, 19:46 | |
|
итак...тут лучше смотреть на обе программы...и для компа и для контроллера...потому что, судя по программе ты обениваешься строками(я обычно с железками числами обменивался...но это так...дело вкуса=))
Form1->Memo4->Lines->Add((int*)bufrd); //совет с форума//выдаёт ошибку надо Form1->Memo4->Lines->Add((char*)bufrd); то есть сделать указателем на строку. в принципе несколькими строками выше все нормально. Form1->Memo2->Lines->Add(IntToHex(i, 4)); // ненормальный хекс, скорее аскикод так правильно. смотри, что у тебя в i хранится. хочешь все, что принял в 16-ричной системе, бери побайтно и собирай строку. AnsiString tmpString=""; for(unsigned int i=0; i<BUFSIZE; i++) tmpString+=IntToHex(bufrd[i],2)+" "; Form1->Memo2->Lines->Add(tmpStrig);
2
|
|
|
0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 24
|
|
| 17.05.2009, 20:27 [ТС] | |
|
Evg, язык си для мк довольнотаки отличается от с++ для компа,
с переменными в си для мк всё просто, а для компа на знать функции для переменных типа IntToStr и тд... Radiohobbyt , вы говорите что используете для обмена числа, я думаю это то что мне нужно. Например: МК_передаёт->FF(255)* ---комп принемаетFF(255)*-> и помещает 255 в переменнную, и наоборот от компа к мк. Завтра попробую ваш метод, ато дома Билдер отказывается работать, выдаёт непонятную ошибку "виндовс диск ненайден". Вообщем спасибо за ответы...
0
|
|
|
0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 24
|
|||||||||||
| 18.05.2009, 20:41 [ТС] | |||||||||||
|
В общем код типа
0
|
|||||||||||
|
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
|
|
| 18.05.2009, 21:25 | |
|
вот тут-то похоже собака-то и порылась=)
я ж говорил, что надо смотреть обе программы т для ПК и для контроллера. значит ты просто передаешь по ком порту строки, а не числа. поэтому все вот так вот и работает. Добавлено через 4 минуты 29 секунд можешь конечно сделать финт ушами вроде Form1->Memo2->Lines->Add(IntToHex(StrToInt(bufrd),2)); 1. из принятой строки делаем число типа инт 2. преобразуем его в 16-ричный вид
1
|
|
|
0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 24
|
|
| 18.05.2009, 21:53 [ТС] | |
|
Да, всё так, с мк точно нормальный хекс идёт(проверял на терминалах),
например 77(3F) а он мне выдаёт аски код "Z",а нужно число 77. В общем уже думаю забить на 16ю форму, главное чтобы принемать число в целом виде, но незнаю как зделать, совсем запутался в этих неизвесных с++ функциях, немогу понять их синтаксис. Как мне хранить и передовать свои числа в порт, из своей переменной(инт скореее?), ато компилятор ругается постоянно на счёт переменных, немогу понять в чём дело ? например; strcpy(bufwr,i) //почему некатит, нехочет передать число 10, и что такое strcpy?. Спасибо...
0
|
|
|
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
|
|
| 19.05.2009, 06:59 | |
|
strcpy(a, b) копирует строку b в строку a(и то и другое-указатели на строки). если второе исло окажется инт...то...в общем он будет копировать не знаюоткуда. не напрасно в общем ругается.
0
|
|
|
0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 24
|
|
| 19.05.2009, 21:19 [ТС] | |
|
Понятно, на счёт strcpy(a, b) , но неужели нет способа нормально передать/принять челое число, или Билдер на это неспособен?
Вообщем те методы программирования которые действуют для мк для усарта, в с++ недействуют , Незнаю уж что делать...
0
|
|
|
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
|
|
| 20.05.2009, 10:12 | |
|
покажи код, как ты отправляешь число из МК. скорее всего в виде 4-х байтов.
билдером твое дело их собрать вместе. int tmp= bufrd[3]<<24+ bufrd[2]<<16+ bufrd[1]<<8+bufrd[0]; только вот не помню...старшая или младшая его часть идет в начале.
0
|
|
|
0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 24
|
||||||
| 20.05.2009, 19:19 [ТС] | ||||||
|
То что с мк идёт правельные данные это я уверен, связовал два мк вместе или спомощью уневерсального терминала.
Вот отрезок кода мк;
Тестовая прога читает данные из внешней памяти,и ввиде чисел и передаёт по усарту, одновременный контроль чисел хранящихся в памяти происходит с помощью ЖК модуля. например прочёл из памяти число 77, а прога в билдере воспринемает аски вариант, т.е "М" или "37 37".
0
|
||||||
|
0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 24
|
|
| 22.05.2009, 20:38 [ТС] | |
|
Доброго времени суток,
Возник вопрос, как в с++, разъеденить целое число типа unsigned int, на два байта? например, число i 65535(0xFFFF) на два байта, х1 255(FF) и х2 255(FF), тоесть получить две переменных типа unsigned char Х1 и Х2...
0
|
|
|
0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 24
|
|
| 23.05.2009, 11:25 [ТС] | |
|
Ещё раз привет всем
,Какаето непонятка творится с билдером 6, при попытке скомпилировать простейшее приложение, выдаёт ошибку ,стоит Виста, раньше он работал только от имени администратора, а щас никак. Ктонибудь встречался с такой проблемой?
0
|
|
|
|
|
| 23.05.2009, 12:20 | |
|
"Диск отсутсвует" - может у тя на новой системе разбивка дисков не такая, как на старой (например, раньше былм C,D,E, а теперь C,D). А в проекте или в свойствах или где-то ещё просочилась инфа о старом диске, которого сейчас уже нет (E в указанном примере)
0
|
|
|
0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 24
|
|
| 23.05.2009, 14:08 [ТС] | |
|
Так у меня только один диск С, я создаю новый проэкт, допустим пустой или с одной кнопкой т.е самое простое, и он при попытке скомпилить выдаёт это неубиваемое окно.
Пробовал несколько раз переустанавливать с разных дисков ,но он всё равно неалё .Может как нибудь нужно удалить всё насройки о билдере? и заново установить...
0
|
|
|
|
|
| 23.05.2009, 15:56 | |
|
А... билдер ты всё-таки с нуля преставлял..
ТОгда хз
0
|
|
| 23.05.2009, 15:56 | |
|
Помогаю со студенческими работами здесь
19
Получить сигнал с СОМ-порта Графика для сом-порта Как отладить программу для чтения данных из сом порта? Как бы вы сделали обмен между потоками для СОМ порта График реального времени для данных, поступающих из СОМ-порта (MFC) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Контроль корректности заполнения дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|