purebasic.info

PureBasic forum
Текущее время: Вт дек 11, 2018 12:42 pm

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




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

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

Значит по умолчанию ASCII.
Т.о. судя по скринам, у вас приходит 859.190, а вам надо 327.456?

Или у вас приходит всё верно, только надо разбить на строки?
Если на строки, то см. у Петра, там он показал как.
Пропишите на форме три TextGadget с номерами 0, 1, 2 и вместо Debug присваивайте строки
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
n=0
If ReadSerialPortData(#ComPort, @Buff, 1)=1
        If Buff<>#CR And Buff<>#LF
          InBuff+Chr(Buff)
        Else
          ;Debug InBuff
         SetGadgetText(n,InBuff)
         n+1
          InBuff=""
        EndIf
EndIf
    Next i
 



В итоге все 3 строчки будут на своих местах.

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


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

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

Кнопку "спасибо" еле нашел :mrgreen:

Кстати i уже занято. Надо видимо другую использовать.

ComboBoxGadget(3, 830, 40, 70, 21, #PB_ComboBox_Editable) ;гаджет выпадающего списка
For i=1 To 99 ;создаем список от 1 до 99 с возможными портами для открытия
AddGadgetItem(3,-1,"COM"+Str(i))
Next i

И он ругается на ошибку. Скрин прикрепляю.


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

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

И он ругается на ошибку. Скрин прикрепляю.

У вас там в коде точно есть эта строчка:
Код:
1
Static InBuff.s


?
Если InBuff.s - строка, результат работы Chr - тоже строка, нет противоречий!

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


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

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

Код:
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
  Static InBuff.s
 
  n=0
  If ReadSerialPortData(#Com_Port, @Buff, 1)=1
    If Buff<>#CR And Buff<>#LF
      InBuff+Chr(Buff)
    Else
      ;Debug InBuff
      SetGadgetText(n,InBuff)
      n+1
      InBuff=""
    EndIf
  EndIf
 
 
  AddGadgetItem(400, -1, PeekS(@InBuffer(), RealInBytes, #PB_Ascii))
  AddGadgetItem(500, -1, PeekS(@InBuffer(), RealInBytes, #PB_Ascii))
EndIf
EndIf
EndProcedure



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

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


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

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

Код:
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
  Static InBuff.s
 
  n=0
  If ReadSerialPortData(#Com_Port, @Buff, 1)=1
    If Buff<>#CR And Buff<>#LF
      InBuff+Chr(Buff)
    Else
      ;Debug InBuff
      SetGadgetText(n,InBuff)
      n+1
      InBuff=""
    EndIf
  EndIf
 
 
  AddGadgetItem(400, -1, PeekS(@InBuffer(), RealInBytes, #PB_Ascii))
  AddGadgetItem(500, -1, PeekS(@InBuffer(), RealInBytes, #PB_Ascii))
EndIf
EndIf
EndProcedure


Вы уже используйте полностью код Петра с теми измерениями, что я дописал, а не миксуйте его вместе со своим!
В этом Вашем куске нет ни Next, ни обязательный перед ним For

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


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

Зарегистрирован: Чт сен 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
Procedure InComStr() ; Прием строк из COM порта.
  Static InBuff.s
  Protected Bytes, Buff.a, i
 
  Bytes = AvailableSerialPortInput(#Com_Port)
  If Bytes>0
    For i=1 To Bytes
      If ReadSerialPortData(#Com_Port, @Buff, 1)=1
        If Buff<>#CR And Buff<>#LF
          InBuff+Chr(Buff)
        Else        
          SetGadgetText(0,InBuff)
          SetGadgetText(1,InBuff)
          SetGadgetText(2,InBuff)
          n+1
          InBuff=""
        EndIf
      EndIf
    Next i
  EndIf
 
EndProcedure



Ниже в программе прописаны окна так.

Код:
1
2
3
EditorGadget(0, 10, 40, 290, 120, #PB_String_ReadOnly)
EditorGadget(1, 10, 210, 290, 120,#PB_String_ReadOnly)
EditorGadget(2, 10, 410, 290, 120,#PB_String_ReadOnly)



Не работает....


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

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

Нет, я не так показал.
Я вот так показал:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Procedure InComStr() ; Прием строк из COM порта.
  Static InBuff.s
  Protected Bytes, Buff.a, i, n.i=0
 
  Bytes = AvailableSerialPortInput(#Com_Port)
  If Bytes>0
    For i=1 To Bytes
      If ReadSerialPortData(#Com_Port, @Buff, 1)=1
        If Buff<>#CR And Buff<>#LF
          InBuff+Chr(Buff)
        Else        
          SetGadgetText(n,InBuff)
          n+1
          InBuff=""
        EndIf
      EndIf
    Next i
  EndIf
 
EndProcedure


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


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

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


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

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

А что тут комментировать? Стандартные Пуриковские функции в справке по F1 доступно их описание.
Заумного алгоритма тоже не наблюдается, всё предельно просто.
Читаем из порта по 1 байту и попутно проверяем, нет ли в числе принятых байтов перевода строки и перевода каретки (#LF и #CR), что означает новую строку.
Если нет, то байты складываем в слова в переменной InBuff, если есть, то значит слово сложилось и мы его печатаем в одном из 3-х SetGadgetText.
Переменная n показывает в каком конкретно.
Что ещё в коде не понятно?

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


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

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


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

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6412
Благодарил (а): 21 раз.
Поблагодарили: 200 раз.
Пункты репутации: 52
apofiz писал(а):
Теперь куда понятнее.
Как правильно должны выглядеть строка (или 3) SetGadgetText.?
А то у меня все значения отображаются где попало, даже на кнопках О_о

Смотри описание в справке по EditorGadget(0, 10, 40, 290, 120)
Там и размеры этого гаджета и координаты.

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


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

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


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

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

Это для меня гадание на кофейной гуще.
Покажите весь код целиком, тогда и будем разбираться предметно.

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


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

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


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

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


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

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


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

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