Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Связь проводная и бесп-ная, интерфейсы, протоколы » Не могу стереть буфер командой "Clear Serialin"


Не могу стереть буфер командой "Clear Serialin"

Сообщений 1 страница 3 из 3

1

Свернутый текст

$Regfile="m8def.dat"
$Crystal=4000000
$hwstack=40
$swstack=16
$framesize=32
$baud = 1200

dim b as byte                                                      'количество не "нулей" в массиве
dim i as byte                                                       ' просто счетчик

$include "e:\M8_Lcd_i2c.bas"                                'подкл. ЖКИ lcd_HD44780_pcf8574.lib

Config portd.1 = Output
Config Portd.0 = input

Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Serialin = Buffered , Size =255
Enable Interrupts

Do
   printbin &h11                                                            ' посылка 1го числа
   printbin &h22                                                            ' посылка 2го числа

   waitms 200                                                               'покурим на всякий случай до окончания посылки

   Clear Serialin                                                             ' сотрем буфер

   b=0                                           
   for i=1 to 255                                                            ' проверим от 1 до 255 "что находится в буфере"
    if _rs232inbuf0(i)<>0 then incr b                               ' посчитаем кол-во ненулевых байтов
   next i

   Clear Serialin                                                             ' сотрем еще раз буфер, потому что пошли N-сутки
   locate 2,1
   lcd hex(_rs232inbuf0(1));hex(_rs232inbuf0(2));" ";b   ' выведем на ЖКИ, что в 1ой, во 2ой ячейке буфера, а так же количество не нулей. Результат "1122 2". 

   wait 2

loop

End

Доброй ночи :) Хелп, плиз, ламеру.

Rx соединен с Tx (k-line), поэтому посылка является приемом.

Заранее спасибо!

0

2

Как бы неожиданным это не показалось, но команда Clear SerialIn не очищает сам буфер. :crazyfun:
Единственное, что она делает это устанавливает значения начала и конца буфера в 0 и также сбрасывает переменную _RS_BUFCOUNT (содержащую количество принятых байт) в 0.
Физически всё, что принято остаётся в памяти. При следующем приёме буфер перезаписывается, а переменные начала и конца буфера, а также количество принятых байт принимают новые значения.

+2

3

sva-don написал(а):

Как бы неожиданным это не показалось, но команда Clear SerialIn не очищает сам буфер. 
Единственное, что она делает это устанавливает значения начала и конца буфера в 0 и также сбрасывает переменную _RS_BUFCOUNT (содержащую количество принятых байт) в 0.
Физически всё, что принято остаётся в памяти. При следующем приёме буфер перезаписывается, а переменные начала и конца буфера, а также количество принятых байт принимают новые значения.

Даже более чем развернутый  ответ :) Спасибо !

0


Вы здесь » Программирование ATMEL в BASCOM. » Связь проводная и бесп-ная, интерфейсы, протоколы » Не могу стереть буфер командой "Clear Serialin"