- 1
- 2
- 3
- 4
- 5
- 6
- 7
while ( port->available() )
{
au8Buffer[ u8BufferSize ] = port->read();
u8BufferSize ++;
if (u8BufferSize >= MAX_BUFFER) bBuffOverflow = true;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+3
while ( port->available() )
{
au8Buffer[ u8BufferSize ] = port->read();
u8BufferSize ++;
if (u8BufferSize >= MAX_BUFFER) bBuffOverflow = true;
}
Если буфер переполнился – попробуем это запомнить и... продолжим затирать память! Реальный кусок из библиотеки работы с RS485 – протоколом, применяющимся в промышленных контроллерах и все такое.
guest8 08.01.2020 06:47 # −999
bormand 08.01.2020 08:18 # 0
gost 08.01.2020 10:22 # +2
MAX_BUFFER = 64, поэтому даже для u8 это какое-то говно.
bormand 08.01.2020 10:27 # 0
smart 08.01.2020 18:23 # 0
gost 08.01.2020 20:16 # +2
https://rextester.com/ODJIH52274
AnalBoy 08.01.2020 20:45 # −1
А если не видно разницы - зачем платить больше кодить на сях?
Именно поэтому я за "дэлфи".
guest8 08.01.2020 21:16 # −999
gost 08.01.2020 21:18 # 0
guest8 08.01.2020 21:24 # −999
bormand 08.01.2020 21:49 # 0
guest8 08.01.2020 22:00 # −999
bormand 08.01.2020 22:27 # 0
Да, там можно тупо присвоить значение символу (даже выражения всякие понимает). Либо описать новый регион памяти и хуйнуть в него секцию, в которой объявлены нужные переменные (тогда они даже не extern в общем-то, просто магически оказываются где надо).
gostinho 08.01.2020 22:40 # 0
gost 08.01.2020 22:12 # 0
Если по flagAddr находится bool — полностью легально. Я ж кастую прямо в bool, на который потом создаю ссылку. Если бы «flagAddr» был укококозателем нужного типа — можно было бы вообще без кастов написать «bool bBuffOverflow = *flagAddr».
> в сишечке так нельзя, там и ссылок-то нету
Можно прибить гвоздями, как Борманд предложил. В «msvc» это делается через «__declspec(dllimport) int hujLen;», а потом линкер смотрит во все прилинкованные .obj и ищет в них этот самый hujLen.
bormand 08.01.2020 22:35 # 0
smart 08.01.2020 18:22 # +2
А они сами позаимствовали этот код вот отсюда: https://github.com/smarmengol/Modbus-Master-Slave-for-Arduino
Но видимо этот говнокусок много кто накопипастил.
Desktop 08.01.2020 18:41 # +3
Steve_Brown 09.01.2020 10:02 # +3
О да. Там еще была реализация I2C, которая уходила в бесконечный цикл при возникновении ошибки на линии. Там еще на форуме (или стековерфлоу?) рекомендовали подтягивающие резисторы поставить, конденсаторы какие-то...
inkanus_gray 11.01.2020 19:13 # −1