Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
15.01.2015, 20:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,727
Сказал спасибо: 2,428
Сказали Спасибо 893 раз(а) в 580 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
Это должна быть полноценная программа. Не с наскока. И окна и поток для приема из порта. Не скучно.
|
|
|
|
15.01.2015, 21:08
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
Сообщение от WindoЗavr
|
я борланд с++ установил, пытаюсь разобраться
а куда ваш код с парсингом вставлять?
|
У вас в программе должно быть какое-то место где принятые данные считываются из ComPort-а. Туда и вставлять - каждый байт передавать функции парсинга и проверять не пришло ли ещё новое значение АЦП.
Сообщение от WindoЗavr
|
там разные кнопки надо создавать, или окошки?
|
По разному бывает
- на C# есть компонент SerialPort (на MS Visual C++ оно тоже вроде есть)
- на Delphi я давно делал приём через WinApi но и компоненты для Delphi тоже какие-то есть в природе - может оно и для BC++ годится
Сообщение от WindoЗavr
|
показывалось в каком нибудь окошке, дальше я уже разберусь
|
Тогда и разбирать поток не надо - достаточно читать и в какой-нибудь TextBox (или что-то подобное) выводить как принялось.
|
|
|
|
15.01.2015, 21:09
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,968
Сказал спасибо: 2,552
Сказали Спасибо 11,849 раз(а) в 5,938 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
Сообщение от baiderin
|
поток для приема из порта. Не скучно.
|
Ставится компонент с портом и все проблемы снимаются. А вот когда освоится Билдер, мозок мал-мал впитает информацию, что-то не понравится в компоненте - его можно сделать свой.
Готовый компонент ищите как "slycomm".
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
15.01.2015, 21:39
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
slycomm скачиваю, и исходники программ с ним
нагуглил такое
оно должно принимать данные с ком порта и выводить его на экран по мере приёма
но это не билдер, а что то древнее
Код:
|
#include ‹iostream›
#include ‹windows.h›
#include ‹conio.h›
#include ‹fstream›
using namespace std;
int main()
{
char name[4]="com";
char symbol='Q';
char *number=new char;
HANDLE hport;
DWORD real_read;
DCB dcb;
BOOL succ;
ofstream out;
cout ‹‹" RECEPTION" ‹‹endl ‹‹endl;
cout ‹‹"Enter number of com-port:";
cin ››number;
strcat(name,number);
hport=CreateFile(name,GENERIC_READ,0,NULL,OPEN_EXI STING,FILE_ATTRIBUTE_NORMAL,0);
if(hport==INVALID_HANDLE_VALUE)
{
cout ‹‹"COM" ‹‹number ‹‹" WAS NOT OPEN !" ‹‹endl;
getche();
return 1;
}
out.open("002.txt",ios::trunc);
if(!out)
{
cout ‹‹"file 002.txt was not open" ‹‹endl;
getche();
return 1;
}
dcb.DCBlength=sizeof(dcb);
succ=GetCommState(hport,&dcb);
dcb.BaudRate=CBR_115200;
dcb.ByteSize=8;
dcb.Parity=EVENPARITY;
dcb.StopBits=2;
succ=SetCommState(hport,&dcb);
while(true)
{
ReadFile(hport,&symbol,1,&real_read,NULL);
if(int(symbol)==27) break;
if(real_read==1) { out ‹‹symbol; cout ‹‹symbol; }
}
out.close();
CloseHandle(hport);
return 0;
} |
Последний раз редактировалось WindoЗavr; 15.01.2015 в 21:50.
|
|
|
|
15.01.2015, 23:07
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,640
Сказал спасибо: 73
Сказали Спасибо 1,798 раз(а) в 650 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
Сообщение от WindoЗavr
|
получается посылка типа _12_245_456_753_425_1005
проблема в том, что числа имеют разное количество знаков и на компьютере будет сложнее разделить их
|
Ну и проблема!
У Вас каждое число всё равно двумя байтами передаётся.
Поэтому со стороны компа нужно просто сделать с ними что-то вроде N=NHi*256+NLo, и получите своё число обратно.
Сообщение от WindoЗavr
|
но это не билдер, а что то древнее
|
Так COM-port - тоже древнее.
|
|
|
|
15.01.2015, 23:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,947
Сказал спасибо: 2,993
Сказали Спасибо 3,170 раз(а) в 2,151 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
Цитата:
|
Передавать словами
|
+100500. Пропускная способность канала связи лучше используется.
Цитата:
|
Как определить какой канал передаётся?
|
Если условия настольно-лабораторные и ПК не теряет данные при приёме, то тупо считать количество принятых слов и закольцовывать счётчик по нужному числу каналов.
Цитата:
|
Как парсить на ПК?
|
Я складываю данные терминалки в файл и потом просматриваю "на холодке". Свой парсер давал в этой теме.
|
|
|
|
15.01.2015, 23:54
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
на счёт протокола передачи и парсинга
скорее всего сделаю передачу данных из 7 этапов
первое значение передалось, мк ждёт, пк подтвердил приём
второе значение передалось, мк ждёт, пк подтвердил приём
и так далее
а после шестого будет допустим код 101010 и контрольные суммы переданного
затем всё повторяется
таких циклов примерно 50 в секунду
этим уберу проблему помехозащищённости и сбивания подсчёта
ком порт потом на FT232 переведу, будет эмуляция ком порта по USB
Последний раз редактировалось WindoЗavr; 15.01.2015 в 23:57.
|
|
|
|
16.01.2015, 00:03
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,968
Сказал спасибо: 2,552
Сказали Спасибо 11,849 раз(а) в 5,938 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
Сообщение от WindoЗavr
|
что то древнее
|
Это консольный вариант, без GUI.
Сообщение от ForcePoint
|
Передавать словами
|
Конечно. В одной из соседних тем уже говорил, что проще передавать в ASCII hex-содержимое (инты), в этом случае начало пакета можно обозначить любой "нецифрой". Только несколько повозиться с переводом, но, используя стандартные функции, это не проблема.
Сообщение от ForcePoint
|
тупо считать количество принятых слов и закольцовывать счётчик по нужному числу каналов.
|
А где начало-конец кольца? Откуда счет?
WindoЗavr, что используете в качестве IDE для контроллера? Я, по большей части, ЦВ, хоть плевков сейчас будет море... Но он удобней, когда надо мелочь по-быстрому сваять.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
16.01.2015, 00:11
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
компьютер будет после приёма пакета данных давать разрешение на передачу следующего
|
|
|
|
16.01.2015, 00:21
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,968
Сказал спасибо: 2,552
Сказали Спасибо 11,849 раз(а) в 5,938 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
Если обмен по команде - вообще не проблема. Как угодно, но желательно контрольную сумму считать. Прямо инты складывать и передавать в хвосте.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:06.
|
|