purebasic.info

PureBasic forum
Текущее время: Пн дек 10, 2018 7:07 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 70 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 8:18 am 
Не в сети
ассистент

Зарегистрирован: Чт сен 24, 2015 8:13 am
Сообщений: 16
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Всем привет. Просьба не пинать новичка.
Вопрос следующий. Принимаю данные с микроконтроллера через COM порт (usb-rs232 переходник)
Данные приходят в терминале так

4329872
234
129
36
12
5

Программа для purebasic принимает данные.
Но вот главный вопрос. Как мне все эти числа (данные)
разложить например по байтам чтоб потом отобразить в разных окошках программы на purebasic?
Вроде простой вопрос, но он меня поставил в тупик. Выручайте) Буду рад примерам)))


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 8:38 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11335
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
МК отсылает данные в виде строк или чисел?
Если строки, то нужно искать в строке над ее завершения (10 или 13).
Если числа то нужно принимать требуемое число байт (судя по примеру - 4).

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 8:43 am 
Не в сети
ассистент

Зарегистрирован: Чт сен 24, 2015 8:13 am
Сообщений: 16
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
А МК данные вот так отсылает.

Print A
Print B
Print C
Print D
Print E
Print F

Мне конечно что то подсказывает что это не самый лучший способ.
Но он лучше чем отсыл нескольких переменных одной строкой.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 8:56 am 
Не в сети
ассистент

Зарегистрирован: Чт сен 24, 2015 8:13 am
Сообщений: 16
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
МК отсылает данные в виде строк или чисел?
Если строки, то нужно искать в строке над ее завершения (10 или 13).
Если числа то нужно принимать требуемое число байт (судя по примеру - 4).


Как для новичка, для меня это "Ваще нипанятна чтота" :mrgreen:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 9:03 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11335
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
Не проверял, но должно работать.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#ComPort = 0 ; Идентификатор COM порта
 
EnableExplicit
 
Procedure InComStr() ; Прием строк из COM порта.
  Static InBuff.s
  Protected Bytes, Buff.a, i
 
  Bytes = AvailableSerialPortInput(#ComPort)
  If Bytes>0
    For i=1 To Bytes
      If ReadSerialPortData(#ComPort, @Buff, 1)=1
        If Buff<>#CR And Buff<>#LF
          InBuff+Chr(Buff)
        Else
          Debug InBuff
          InBuff=""
        EndIf
      EndIf
    Next i
  EndIf
 
EndProcedure
 
If OpenSerialPort(#ComPort, "COM1", 9600, #PB_SerialPort_NoParity, 8, 1,
                  #PB_SerialPort_NoHandshake, 255, 255)
 
  Repeat
    InComStr()
    Delay(500)
  ForEver
 
  CloseSerialPort(#ComPort)
Else
  Debug "Не удалось открыть COM порт"
EndIf


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 9:03 am 
Не в сети
ассистент

Зарегистрирован: Чт сен 24, 2015 8:13 am
Сообщений: 16
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пробовал так. Но нифига не пашет (не удивлен) .
Не выводится ни как. Пытаюсь разбираться. Но не могу найти примеры хоть какой то реализации.

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
;Процедура приема данных
Procedure InData()  
  Protected InBytes
  Dim InBytes.c(9) ;Байтовый массив, используемый как бцфер приёма данных.
  Protected Dim InBuffer.a(InBytes), RealInBytes
 
 
  If IsSerialPort(#COM_Port)  ;С таким ИД порт открыт.
    InBytes = AvailableSerialPortInput(#COM_Port)
    If InBytes>0  ;Получены данные.
     
      RealInBytes = ReadSerialPortData(#COM_Port, @InBuffer(), InBytes)
      If RealInBytes>0
       
        Structure RealInBytes
          datas1.w
          datas2.w
          datas3.w
          datas4.w
          datas5.w
          datas6.w
          datas7.w
          datas8.w
        EndStructure
       
       
        AddGadgetItem(400, -1, PeekS(@InBuffer(), datas1, #PB_Ascii))
        AddGadgetItem(500, -1, PeekS(@InBuffer(), datas2, #PB_Ascii))
      EndIf
    EndIf
  EndIf
 
EndProcedure



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 9:21 am 
Не в сети
ассистент

Зарегистрирован: Чт сен 24, 2015 8:13 am
Сообщений: 16
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Не. Ничего не получается... Уже не знаю что придумать.
Свой вариант надо переписывать.
Опыта почти нет...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 11:03 am 
Не в сети
ассистент

Зарегистрирован: Чт сен 24, 2015 8:13 am
Сообщений: 16
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Не могу придумать как правильно отобразить принятые данные. Жаль. Я думал хоть тут помогут.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 11:30 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11335
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
apofiz писал(а):
Не. Ничего не получается.
apofiz писал(а):
Я думал хоть тут помогут.
"Ничего не получается" это не очень информативно, а не зная подробностей сложно чем-то помочь. Надеюсь был правильно выбран порт и скорость обмена?
Хоть что-то в порт приходит?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 1:00 pm 
Не в сети
ассистент

Зарегистрирован: Чт сен 24, 2015 8:13 am
Сообщений: 16
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Выше я писал что все принимается. Даже так работает. Но в окне данные отображаются точно так же как их передает контроллер. Как мне надо чтоб они отображались я тоже писал. Напишу еще раз на всякий случай. Мне надо отображать эти данные в разных текстовых гаджетах в программе. Текстовые гатжеты создать не проблема. Данных может быть несколько видов, строка с точкой, 2 байта, байт. И их надо отображать в разных окнах а не все в одном. В каком виде они принимаются я тоже выше писал.

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
;Процедура приема данных
Procedure InData()  
 Protected InBytes
 Dim InBytes.c(9) ;Байтовый массив, используемый как бцфер приёма данных.
Protected Dim InBuffer.a(InBytes), RealInBytes
 
 
 If IsSerialPort(#COM_Port)  ;С таким ИД порт открыт.
 InBytes = AvailableSerialPortInput(#COM_Port)
 If InBytes>0  ;Получены данные.
   
 RealInBytes = ReadSerialPortData(#COM_Port, @InBuffer(), InBytes)
 If RealInBytes>0
 
x=InBytes(0)
x1=InBytes(1)
 
 ;AddGadgetItem(400, -1, PeekS(@InBuffer(), x, #PB_Ascii))
 AddGadgetItem(500, -1, PeekS(@InBuffer(), x1, #PB_Ascii))
EndIf
 EndIf
 EndIf
 
EndProcedure



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 1:20 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6412
Благодарил (а): 21 раз.
Поблагодарили: 200 раз.
Пункты репутации: 52
А в какой кодировке у вас настроен компилятор?
И ещё, хотелось бы реально увидеть, что вы видите на приеме:
4329872 - это реальные данные?
И что реально хотели бы увидеть, что бы понять, какие преобразования вам нужны.

_________________
read-only ¯\_(ツ)_/¯


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 1:28 pm 
Не в сети
ассистент

Зарегистрирован: Чт сен 24, 2015 8:13 am
Сообщений: 16
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Понятия не имею в какой кодировке он настроен. Да это в данном случае и не имеет ни какого значения.
Скриншот с принимаемыми данными прикрепляю.
Нет. Данные в сообщении были взяты для примера.
Уже в третий раз пишу что я хочу увидеть. Нужно чтоб данные отображались не в виде 3 строк в одном окне и в кучу, а чтоб каждая из 3 строк (их будет больше) отображалась в окне программы в отдельных текстовых (например) гатжетах. Мне нарисовать в пэйнте как это должно выглядеть? Если надо то нарисую.

С таким кодом отображается как на скриншоте

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
;Процедура приема данных
Procedure InData()  
 Protected InBytes
 Dim InBytes.c(9) ;Байтовый массив, используемый как бцфер приёма данных.
Protected Dim InBuffer.a(InBytes), RealInBytes
 
 
 If IsSerialPort(#COM_Port)  ;С таким ИД порт открыт.
 InBytes = AvailableSerialPortInput(#COM_Port)
 If InBytes>0  ;Получены данные.
   
 RealInBytes = ReadSerialPortData(#COM_Port, @InBuffer(), InBytes)
 If RealInBytes>0
 
x=InBytes(0)
x1=InBytes(1)
 
 
 ;AddGadgetItem(400, -1, PeekS(@InBuffer(), RealInBytes, #PB_Ascii))
 AddGadgetItem(500, -1, PeekS(@InBuffer(), RealInBytes, #PB_Ascii))
EndIf
 EndIf
 EndIf
 
EndProcedure



Вложения:
Безымянный.jpg [7.3 KiB]
Скачиваний: 0
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 2:07 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6412
Благодарил (а): 21 раз.
Поблагодарили: 200 раз.
Пункты репутации: 52
apofiz писал(а):
Понятия не имею в какой кодировке он настроен. Да это в данном случае и не имеет ни какого значения.

Ну как сказать. К примеру тип .с в юникоде 2 байта, а не 1, как в ASCII.
Хоть какая у вас версия PB знаете?
apofiz писал(а):
Мне нарисовать в пэйнте как это должно выглядеть? Если надо то нарисую.

Да хоть в фотошопе. Мне без разницы, лишь бы было понятно, как это должно выглядеть.
Как это выглядит я уже увидел.

_________________
read-only ¯\_(ツ)_/¯


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 2:09 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1717
Откуда: Алматы
Благодарил (а): 16 раз.
Поблагодарили: 47 раз.
Пункты репутации: 5
да это какой-то террорист :)

думаю в анси наверное, если он не знает где и что настраивается, то значит там значение по умолчанию стоит.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с байтами UART
СообщениеДобавлено: Чт сен 24, 2015 2:16 pm 
Не в сети
ассистент

Зарегистрирован: Чт сен 24, 2015 8:13 am
Сообщений: 16
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
SereZa я тебя оскорблял? Я что такого написал? Если ты новичек и просишь помощи то это здесь называется терроризм? Сам ты террорист.

У меня версия purebasic 5.11
Настройки у меня по умолчанию и меня это пока вполне устраивает.
Скриншот как хотелось бы чтоб все выглядело прикрепляю.


Вложения:
111.jpg [6.66 KiB]
Скачиваний: 0
Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 70 ]  На страницу 1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB