У меня не открылась #19. Пишет устарела.
Странно...
Попробуйте по этому пути:
"Программирование ATMEL в BASCOM. » Примеры применения в среде Баском » Исследование USART"
Программирование ATMEL в BASCOM. |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » Программирование ATMEL в BASCOM. » Связь проводная и бесп-ная, интерфейсы, протоколы » Кто передавал температуру 18в20 по радиоканалу?
У меня не открылась #19. Пишет устарела.
Странно...
Попробуйте по этому пути:
"Программирование ATMEL в BASCOM. » Примеры применения в среде Баском » Исследование USART"
Это работает при приёме данных через радиомодуль?
Работает, если использовать протокол UART.
Протоколу фиолетово, проводное соединение, радио или ИК, главное, чтоб аппаратно поддерживалось...
Если автору хочется побитных заморочек, то тоже сгодится, но придется еще и биты считать... 
Отредактировано Nord (2018-10-12 18:32:05)
Nord
Сколько не бился,мне не удалось передать по радиоканалу данные так,как они обычно передаются от мк к мк,или от терминала к мк.Так как в буфере уарт всегда есть хоть один символ мк всё время читает и постоянно будет поднят флаг прерывания уарт.Широкополосный приёмник радиомодуля всегда гонит в уарт хоть что-то.
Sergik07
Про поймать передачу писал не Вам, а ответил на коммент модератора Александр Д.
Мое устройство, обычные часы. 2х18в20, RTC DS3231, RC5(установка/коррекция времени DS3231). Индикация на высоковольтных неоновых лампах ИН(6 разрядов час:мин:сек) динамическая. Для экономии портов К155ИД1 на цифры. 6 портов + высоковольтные ключи разряды. Переход на показание термометров(Кнопка на корпусе, или хлопнуть ладошками. Кнопка на пульте.) Индицирует t-улица, t-дома(можно переключить с 18в20 на ds3231, или наоборот) с периодом 1 сек. Так захотел мой напарник. С меня только пруга. Монтаж его суета.
Давно хочу освоить передачу данных именно с шумящими приемниками. Люди это уже давно делают. Но я, гововка ...... только учусь.
NordСколько не бился,мне не удалось передать по радиоканалу данные так,как они обычно передаются от мк к мк,или от терминала к мк.Так как в буфере уарт всегда есть хоть один символ мк всё время читает и постоянно будет поднят флаг прерывания уарт.Широкополосный приёмник радиомодуля всегда гонит в уарт хоть что-то.
Мне пришлось это делать один раз, сработало.
Основная задача - заставить приемник реагировать на сигнал от передатчика, как ни банально звучит.
В моем случае сигналом служил одиночный импульс длительностью более 0,1 сек, который вряд ли смоделирует помеха.
После этого приемник уже читал т.н. ID и данные.
Обратной связи не было, да и не требовалось. Все живет в пределах одного РВ корпуса.
Устройство "городилось" для работы в шахте, взамен сдохшего блока (ценник у него конский), где и до сих пор работает.
Прошивки не сохраняли, не видели ценности... Видимо, зря... 
Давно хочу освоить передачу данных именно с шумящими приемниками. Люди это уже давно делают. Но я, гововка ...... только учусь.
Почитайте на тему детектирования сигнала, еще раз направляю... 
И мои 5-ть копеек к теме... 
Почитав немного теории по работе с RF433, у меня передача-прием построен так:
- Сразу передаю преамбулу. 5 символов, символ какой больше нравиться.
For J = 1 To 5
Print "*"
Waitms 20
Что это дает, это дает возможность заткнуть АРУ приемника, т.е. приемник начитает выделять полезный сигнал на время до 70мкс, шумы при этом затыкаются.
Эта информация взята на этом форуме. Спасибо за помощь. 
- Далее, передаю строчку кода, на первом месте идентификатор1. У меня 170 - 10101010 в двоичном коде, далее сама информация.
Printbin Идентификатор1 ; T1 ; Идентификатор2 ; T1 ; Crc
Идентификатор2 у меня 85 - 01010101 в двоичном коде.
Crc считается как Crc=Идентификатор1 XOR T1 XOR Идентификатор2
На приемной стороне - прием по прерыванию UART
Принятый_байт_usart = Udr
Берем из буфера принятый байт и проверяем
Если байт(1)=170, то берем следующий байт(2),
Берем следующий байт(3),
Если байт(3)=85, то берем следующий байт(4),
Берем следующий байт(5),
Если 2-й байт и 4-й равны вычисляем Crc
Если байт(3)=Crc, то флаг_данные_готовы=1
ВСЁ.
Взято на польском форуме. Использовано в модернизации кухонного таймера. Работает уже месяц.
Nord
Про этот импульс, и весь вопрос. Подал выход приемника на два порта. Один программный UART, второй для измерения длительности(помеха/импульс опознавания).
Config PinD.2 = Input
Config Timer2 = Timer , Prescale = 1024
Stop Timer2
Enable Interrupts
Enable Timer2
начинаем цикл
If PinD.2 = 1 Then
Bitwait PinD.2 , Set 'signal goes high > start timer
Start Timer2
Bitwait PinD.2 , Reset 'signal goes low > stop timer
Stop Timer2
B = Tcnt2 'store number of ticks per signal in Signaltime byte
Tcnt2 = 0
End If
If B > 200 And B < 360 Then
Gosub Kodin
B = 0
End If
Здесь контроль выполнения черезь терминал
'=======================================================================
Kodin:
Inputbin Sinhr
Input Temp_in Noecho
Return
'========================================================================
Движение всегда есть. Уже не жду готового ответа. Жаль. Не придумывать же заново кирпичики. Вот, и задал вопрос. Нахрен изобретать велосипед, если у людей есть решения.
Это все равно высчитывать закон Ома снова. Профессора обьясняют науку студентам.
Как детектировать сигнал ..... Первый мой трансивер собран в 1990г.
Движение всегда есть. Уже не жду готового ответа.
Да готовый ответ вам никто, боюсь и не даст... 
У каждого своих проектов хватает, чтоб в чужих копаться...
Тут больше принято направлять к поиску, чтоб человек сам дотумкал, заодно и для себя что-то схватить... 
Как детектировать сигнал ..... Первый мой трансивер собран в 1990г.
Приятно узнать об этом, четное слово.
Тем более, уже должны знать, как наименьшим потом отделить полезный сигнал от шелухи...
И мои 5-ть копеек к теме...
Это уже целый рубль ! 
pavel1969
На приемной стороне - прием по прерыванию UART
Принятый_байт_usart = Udr
Белый шум в эфире сколько в секунду прерываний сделает?
При появлении на выходе приемника полезного сигнала белый шум тоже присутствует ?
Nord
Тем более, уже должны знать, как наименьшим потом отделить полезный сигнал от шелухи..
Ни как не отделишь. Передатчик передал, и вырубился на 5 минут. Примерные пять. На морозе мож 6, или 4.
Да, передачу сигнала знаю как делать. Включился передатчик, пошла несущая. На выходе 1. Передача преамбулы(обязательно одинаковые импульсы, что бы не путать собственный pin) вход приемника в режим. Передача импульса опознания, ну скажем 10 мсек(помеха/сигнал). Передача данных по шим.
Все вроде просто. Но не поймать мне пока свой сигнал. Сравнивается он с помехой.
Да готовый ответ вам никто, боюсь и не даст...
Готовый ответ в коде уже был на первой странице.Всё устойчиво работает нон-стоп уже и не помню сколько времени,наливай да пей. Ну,всё что знал,рассказал(с)
Nord
Тем более, уже должны знать, как наименьшим потом отделить полезный сигнал от шелухи..
Ни как не отделишь.
Данунафиг... 
И как же мы радио в машине слушаем ? 
Хотя, отчасти правильно...
Нет нормальных р/ст, одна шелуха, отделять нечего... 
Отредактировано Nord (2018-10-12 22:05:14)
Белый шум в эфире сколько в секунду прерываний сделает?
Наверное очень-очень-очень много, но мне это не интересно...
У меня была задача поймать приемником кодовую посылку и выполнить действие - продублировать сигнал пЫк-пЫк кухонного таймера. Другой работой приемник и МК не заняты.
Белый шум присутствует в любом диапазоне радиочастот. От него не избавиться даже перейдя на более высокие частоты.
Можно попробовать модули со своим процессором на борту, который выдаст уже готовый результат.
Но это уже совсем другая музыка.
В качестве бреда - прикрути к приемнику тиньку в качестве бортового МК, и при правильном приеме выдавай в параллельный УАР готовый результат.
Отредактировано pavel1969 (2018-10-13 00:53:36)
Nord
И как же мы радио в машине слушаем ? 
На расстояние о мну, тихая зона. Мжешь флешку поставить.
Вопрос? Сколько нужно Ват, что бы заглушить этот бред?
Вот такая задумка у мну по поводу передачи импульса опознования в 10мс.
Суть кода. Подаем единицу на передатчик 150 мс. Пошла несущая. Приемник из белого шума переходит на 1. Дальше передача импульса опознования 10мс. Дальше передача по програмному USART. Повторение 3 раза с задержкой 100мс(одно должно совпасть с учетом обработки программы с приемником. Повторение моей программы с часами примерно 300мс.
$regfile = "attiny2313a.dat" ' Используемый контроллер
$crystal = 8000000 ' 9,6 МГц при CKDIV8 = 0 (смотреть скрин фьюзов)
' $baud = 4800
'------------------------- Настройка Watchdog --------------------------------
On Wdt Обработка_прерывания_watchdog ' Nosave ' Переход на подпрограмму обработки прерывания после переполнения таймера-счётчика Watchdog
Config Watchdog = 1024 'время срабатывания ~1сек., при соответствии $crystal и фьюзов МК ' 16 32 64 128 256 512 1024 2048 4096 8192
Config PORTD.5 = output
Z alias PORTD.5
Z = 0
'--------------------- Используемые переменные -------------------------------
Dim taim As Byte
Dim Sinhr As Byte : Sinhr = &B11111111
Dim Albyte As String * 8
Dim Sch As Byte
Dim Id As String * 4 : Id = "1550"
'Переменные 1 датчика 18В20
'============================================================================================================
Dim Tds1 As Integer 'температура получаемая с 1 датчика в 0.1градуса. 10 = 1,0 градус
Dim Tds1_str As String * 4
Dim Err_c1 As Bit
'-------------- Разрешаем работу необходимых прерываний ----------------------
Enable Wdt ' Разрешаем прерывание от переполнения таймера Watchdog
'------------ Разрешаем работу всех включенных прерываний --------------------
Enable Interrupts ' Глобально разрешаем все взадействованные прерывания
'===============================================================================
' Г Л А В Н Ы Й Ц И К Л
'===============================================================================
Главный_цикл:
If taim = 5 Then
Gosub Temper
Albyte = Id + Tds1_str
Config PortD.2 = Output : PORTD.2 = 1
Z = 1
Waitms 150
For Sch = 0 To 3
PORTD.2 = 0
Waitms 1
PORTD.2 = 1
Waitms 10
PORTD.2 = 0
Open "comd.2:4800,8,n,1" For Output As #1
Printbin # 1 , Sinhr
Print #1 , Albyte
Config PortD.2 = Output : PORTD.2 = 1
Waitms 100
Next Sch
Waitms 100
Z = 0
taim = 0
Config Portd.2 = Input 'Для сна. Если оставить выходом, жрать будет
End If
Powerdown
Goto Главный_цикл
End
'===============================================================================
' П О Д П Р О Г Р А М М Ы
'===============================================================================
Обработка_прерывания_watchdog:
Incr taim
Return
'===============================================================================
'Обработка датчика температуры DS18B20
'====================================================================================================
Temper:
1wreset PinB , 2
If Err = 1 Then
Err_c1 = 1 'ставим флаг ошибки датчика
Tds1 = 32767 'если при опросе небыло ответа ставим флаг ошибки
Else
Err_c1 = 0
1wwrite &HCC , 1 , PinB , 2 'пропуск ROM(для всех)
1wwrite &H44 , 2 , PinB , 2 'конвертировать температуру(для всех)
End If
Waitms 94
'если небыло ошибки при начале конвертирования
If Err_c1 = 0 Then
1wreset PinB , 2
If Err = 1 Then
Tds1 = 32767 'если при опросе небыло ответа ставим флаг ошибки
Else 'иначе, если ошибки не было, продолжаем опрос датчика
1wwrite &HCC , 1 , PinB , 2
1wwrite &HBE , 1 , PinB , 2
Tds1 = 1wread(2 , PinB , 2)
Tds1 = Tds1 * 10
Tds1 = Tds1 \ 16
End If
Tds1_str = Str(tds1)
Tds1_str = Format(tds1_str , "+000")
Else
Tds1 = 32767
Tds1_str = "8888"
End If
Return
'===============================================================================Проверить в работе смогу минимум завтва. Может кто какие исправления предложит.
Прием так.
$map
$regfile = "m328pdef.dat"
$crystal = 16000000 'äëÿ óìåíüøåíèÿ ýíåðãîïîòðåáëåíèÿ
$baud = 4800 'â òåðìèíàëå òîæå âðîäå ñïåøèòü íåêóäà
$hwstack = 160
$swstack = 160
$framesize = 64
'=====Êîíôèãóðàöèÿ äèñïëåÿ
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.1 , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7
Config Lcd = 16 * 2
'===============================================================================
Dim Id_data As String * 4
Dim Temp_in As String * 18
Dim Temper As String * 4
Dim C As Byte
Dim Cstr As String * 3
Dim B As Word
Dim Sinhr As Byte
'===============================================================================
Dim Ver_log As String * 20
Declare Sub Clearlcd
Call Clearlcd
'===============================================================================
Config Timer2 = Timer , Prescale = 1024
Stop Timer2
'===============================================================================
'÷òîá ñðàçó âèäåòü ïåðåçàãðóçêó èëè íåïðàâèëüíîå ïîäêëþ÷åíèå
Locate 1 , 1
Ver_log = " Ustanovka "
Lcd Ver_log
Locate 2 , 1
Lcd " UART "
Wait 1
'===============================================================================
Enable Interrupts
Enable Timer2
'===============================================================================
'*******************************************************************************
Do
Waitms 300
If PinD.3 = 1 Then
Bitwait PinD.3 , Set 'signal goes high > start timer
Start Timer2
Bitwait PinD.3 , Reset 'signal goes low > stop timer
Stop Timer2
B = Tcnt2 'store number of ticks per signal in Signaltime byte
Tcnt2 = 0
End If
If B > 200 And B < 360 Then
Open "comd.3:4800,8,n,1" For Input As #1
Gosub Kodin
B = 0
Config PinD.3 = Input
End If
Id_data = Mid(Temp_in , 2 , 4)
If Id_data = "1550" Then
Temper = Mid(Temp_in , 6 , 4)
Print "Temp " ; Temper
Else
Print " " ; Temp_in
Temp_in = ""
End If
Incr C
Gosub Ind
Loop
End
'*******************************************************************************
'=====î÷èñòêà LCD
Clearlcd:
Initlcd
Cls
Cursor Off 'åñëè íà ýêðàíå ìóñîð ïåðåèíèöèàëèçèðóåì
Return
'===============================================================================
Ind:
Cstr = Str(c)
Cstr = Format(cstr , "000")
Locate 1 , 1
Lcd "Priem " ; Cstr ; " " ; Temper
Locate 2 , 1
Lcd "HER Priem " ; Temp_in
Return
'===============================================================================
Kodin:
Inputbin #1 , Sinhr
Input #1 , Temp_in Noecho
Return
'=============================================================================Повторение 3 раза с задержкой 100мс
Время отработки АРУ приемника предположительно около 70мс.
100мс многовато будет, приемник может снова уйдет в белый шум...
Отредактировано pavel1969 (2018-10-14 23:08:30)
Чем закончилась-то борьба с помехами ? 
Молчание как-то напрягает... 
Поймать сигнал опознования без прерывания не получилось. Остановился на версии предложенной Sergik07
Передача на тини2313, просто в наличии была. Думаю использовать тини84, что бы повесить еще DHT22.
$regfile = "attiny2313a.dat" ' Используемый контроллер
$crystal = 8000000
'------------------------- Настройка Watchdog --------------------------------
On Wdt Обработка_прерывания_watchdog ' Nosave ' Переход на подпрограмму обработки прерывания после переполнения таймера-счётчика Watchdog
Config Watchdog = 1024 'время срабатывания ~1сек., при соответствии $crystal и фьюзов МК ' 16 32 64 128 256 512 1024 2048 4096 8192
Config PORTb.1 = output
Z alias PORTb.1
Z = 1
'--------------------- Используемые переменные -------------------------------
Dim taim As Word
Dim Sinhr As Byte : Sinhr = &B10101010
Dim Albyte As String * 16
Dim Sch As Byte
Dim Id As String * 4 : Id = "1550"
'Переменные 1 датчика 18В20
'============================================================================================================
Dim Tds1 As Integer 'температура получаемая с 1 датчика в 0.1градуса. 10 = 1,0 градус
Dim Tds1_str As String * 4
Dim Err_c1 As Bit
'-------------- Разрешаем работу необходимых прерываний ----------------------
Enable Wdt ' Разрешаем прерывание от переполнения таймера Watchdog
'------------ Разрешаем работу всех включенных прерываний --------------------
Enable Interrupts ' Глобально разрешаем все взадействованные прерывания
'===============================================================================
' Г Л А В Н Ы Й Ц И К Л
'===============================================================================
Главный_цикл:
If taim = 300 Then
Z = 0
Open "comd.0:2400,8,n,1" For Output As #1
Waitms 100
Gosub Temper
Albyte = Id + Tds1_str
For Sch = 0 To 3
Waitms 75
Printbin #1 , Sinhr
Print #1 , Albyte
Next Sch
Waitms 50
Z = 1
taim = 0
Config Portd.0 = Output : Portd.0 = 0 'Перевод порта для понижения энергопотребления
Waitms 10
End If
Powerdown
Goto Главный_цикл
End
'===============================================================================
' П О Д П Р О Г Р А М М Ы
'===============================================================================
Обработка_прерывания_watchdog:
Incr taim
Return
'===============================================================================
'Обработка датчика температуры DS18B20
'====================================================================================================
Temper:
1wreset Pinb , 2
If Err = 1 Then
Err_c1 = 1 'ставим флаг ошибки датчика
Tds1 = 32767 'если при опросе небыло ответа ставим флаг ошибки
Else
Err_c1 = 0
1wwrite &HCC , 1 , Pinb , 2 'пропуск ROM(для всех)
1wwrite &H44 , 1 , Pinb , 2 'конвертировать температуру(для всех)
End If
Waitms 750
'если небыло ошибки при начале конвертирования
If Err_c1 = 0 Then
1wreset Pinb , 2
If Err = 1 Then
Tds1 = 32767 'если при опросе небыло ответа ставим флаг ошибки
Else 'иначе, если ошибки не было, продолжаем опрос датчика
1wwrite &HCC , 1 , Pinb , 2
1wwrite &HBE , 1 , Pinb , 2
Tds1 = 1wread(2 , Pinb , 2)
Tds1 = Tds1 * 10
Tds1 = Tds1 \ 16
End If
Tds1_str = Str(tds1)
Tds1_str = Format(tds1_str , "+000")
Else
Tds1 = 32767
Tds1_str = "8888"
End If
Return
'===============================================================================Так как RX USARTа находится в постоянном приеме из-за шума, поставил отдельный приемный контролер.
$regfile = "Attiny13a.dat"
$crystal = 9600000
'===============================================================================
Open "comb.0:2400,8,n,1" For Input As #1
Open "comb.4:4800,8,n,1" For Output As #2
'===============================================================================
'Led Alias PortB.1 : Config Led = Output
'===============================================================================
'===============================================================================
Dim Sinhr As Byte
Dim Albt As String * 8
Dim Dat_in As String * 8
Dim Id As String * 4
Dim Temper As String * 4
'===============================================================================
'*******************************************************************************
Do
Waitms 100
Strt:
Gosub Kodin
Albt = Dat_in
Id = Left(Albt , 4)
If Id = "1550" Then
Temper = Mid(Albt , 5 , 4)
Print #2 , Temper
Waitms 35
Else
Waitms 35
Dat_in = ""
Goto Strt
End If
Loop
End
'===============================================================================
Kodin:
Inputbin #1 , Sinhr
Input #1 , Dat_in Noecho
Return
'=============================================================================Первая передача всегда неадекватная, три других нормуль. Но из-за задержек в приемном конроллере, всегда две нормальных. Соответственно передает два раза. Снова грабли, но об них ниже. Готовая конструкция использует уже прерывание по USART.
'=====Включаем прерывание по USART========================================================================== '=============================================================================== On URXC Reads Enable URXC Dim Прием_USART As String * 6 Dim Id As String * 2 '----------------------------------------------------------------------------- '======Если пришло по USART============================================================== Reads: $timeout = 4000 'ждем Input Прием_USART Noecho Id = Left(Прием_USART , 1) If Id = "-" Or Id = "+" Then Tds2_str = Прием_USART Return
О граблях. Bascom в конце строки передачи ставит символы ввод, и возврат каретки. Это удобно для работы например с ESP8266. Здесь это необходимо. В нашем случае это мешает.
Если прописано Print #2 , Temper
В реале выглядит Print #2 , Temper ; Chr(10) ; Chr(13)
В приемном буфере это выглядит уже хреново. Например Temper = "+256".
Передача:
+256
+256
Прием:
+256
+256
Появляются пустые строки. Если просто прописать Tds2_str = Прием_USART, то возьмешь последнюю пустую строку.
Отредактировано rom-i (2018-10-19 10:00:41)
Где то на форумах встречал вопрос. Как отключить в передаче по USART CR, и LF в конце строки. Но ответа небыло.
О граблях. Bascom в конце строки передачи ставит символы ввод, и возврат каретки. Это удобно для работы например с ESP8266. Сдесь это необходимо. В нашем случае это мешает.
Если они присутствуют всегда, то из принятой строки игнорировать последние два символа.
Функция MID.
Допустим, <принятая строка> имеет 10 символов.
Тогда:
<итоговая строка> = MID(<принятая строка>, 1, 8)
Орфографию сами поправите... 
Функция Mid в пустой строке?
У мну проще
Id = Left(Прием_USART , 1)
If Id = "-" Or Id = "+" Then Tds2_str = Прием_USART
Вместо Id = "-" буду использовать цифры. То есть передача температуры 18в20 Id = "15", влажности Id = "04", и тд.
Функция Mid в пустой строке?
Почему "пустая строка" ?
Ваши же слова: 
Если прописано Print #2 , Temper
В реале выглядит Print #2 , Temper ; Chr(10) ; Chr(13)
Строка цельная, просто из-за последних двух символов возникает т.н. "пустая строка".
В передаче её нет.
Есть еще выход:
Отправляйте Print #2 , Temper;
Никаких Chr(10) ; Chr(13) не будет...
Только надо будет придумать символ окончания посылки или отправлять фиксированную длину.
Отредактировано Nord (2018-10-19 10:04:33)
Прими собственную передачу терминалом в десятичном формате. Там будет видно в конце 10, 13 после посылки нужной информации. Делал метеостанцию передачей данных на narodmon.ru. Состав mega8, ESP8266 соединение по Vi Fi, BMP180, 18B20, DHT22, аналоговый датчик скорости ветра ДСВ-1. Общение с ESP8266 по USART AT командами. В описании ESP8266 четко сказано. Обязательное условие, строка должна заканчиваться CR+LF. Ардуинщики так, и прописываю. Разобрался, что на Bascom это Chr(10) ; Chr(13). Тож прописал. Появилась дополнительная пустая строка. На форумах наткнулся, что Bascom это делает сам. Всегда добавляет CR+LF. Видны они только в терминале с отображением DEC.
Здесь уже вторая передача. Следующий приемник USART примет уже четыре пустышки.
Извиняюсь за очередность 13, 10. Писал по памяти. Но это небольшая ошибка, и сути не меняет.
Отредактировано rom-i (2018-10-19 12:21:40)
Прими собственную передачу терминалом в десятичном формате.
В Терминале можно отключить отправку данных символов в Bascom, действительно, не получится...
Я уже ранее давал ссылку на Исследования Александра, предложил свои пути решения.
Когда копался с дисплеем Nextion, то вдоволь наотправлялся и напринимался... 
Использую (за основу) код Александра с небольшими (мои пути решения) доработками.
Никакие лишние символы не мешают...
У меня работает, частично уже воплощено в железе и смонтировано, у вас - грабли... 
Nord
С этим кодом Александра без грабель не обошлось. 10 тоже пришлось вышвыривать.
'======Если пришло по USART==============================================================
Reads:
Принятый_символ = Udr
If Принятый_символ <> 13 Then
If Принятый_символ <> 10 Then Буфер_приема = Буфер_приема + Chr(принятый_символ)
Else
Tds2_str = Буфер_приема
' Print Буфер_приема
Буфер_приема = ""
End If
ReturnВот теперь делает нормальную строку. Иначе было вместо Буфер_приема = "+282" ; Chr(13) ; Chr(10) , проходило Буфер_приема = Chr(10) ; "+282" ; Chr(13) ; Chr(10).
Заканчиваем прием на 13, а за ней идет 10. Достается следующей строке в начале.
Отредактировано rom-i (2018-10-19 17:37:21)
С этим кодом Александра без грабель не обошлось. 10 тоже пришлось вышвыривать.
Вот теперь делает нормальную строку.
Так я же про то и твержу уже давно ! 
Берем за основу, но дорабатываем под свои нужды.
- Как сделать статую ?
- Берем камень и отрубаем все лишнее...
| Датчики температуры | Путеводитель по Форуму | 2022-02-18 |
Вы здесь » Программирование ATMEL в BASCOM. » Связь проводная и бесп-ная, интерфейсы, протоколы » Кто передавал температуру 18в20 по радиоканалу?