| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Согласование RS485
10.10.2012, 16:49
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Согласование RS485
Хм .. так и паскаль освою )) Глянул строковую переменную в паскале. Там символы идут в масссиве со второго байта, в первом байте скорее всего длина строки спрятана ( строка не может быть длинее 255 байт). Поэтому запись в i1[0] странноватая.
Может проще на каждую переменную завести свой txt. выбросить эти циклы и глянуть что там будет ?
|
|
|
|
10.10.2012, 16:51
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Согласование RS485
Исчо вопросик - приемник там с 115200 справляется ? FIFO то нету. 200 микросекунд к UARTу не подошел - и тю тю - байтик пропал.
|
|
|
|
10.10.2012, 16:59
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Согласование RS485
Строковые переменные в паскале начинаются с 0. Первый символ выводится на экран тот, который записан в 0 символе строки.
Скорость пробовал от 1000, ошибок компиляции не было, до 115200. самое интерестное что портяться чаще первые два символа - два байта первые...
я сейчас пробую строку формировать в ЕЕПРОМ а потом один раз считать и выдать по юарту.
вот пример из хелпа:
|
Код:
|
var s : string[5];
...
s := 'mik';
{s[0] is char literal 'm'
s[1] is char literal 'i'
s[2] is char literal 'k'
s[3] is zero
s[4] is undefined
s[5] is undefined} |
Последний раз редактировалось swat24; 10.10.2012 в 17:10.
|
|
|
|
10.10.2012, 17:14
|
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: Согласование RS485
Убрал сообщение, ошибся чуток
Последний раз редактировалось Yurkin2007; 10.10.2012 в 17:37.
|
|
|
|
10.10.2012, 17:21
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Согласование RS485
если так, то хелп немного отличается от того что должно быть...
берем FloatToStr.
описание - procedure FloatToStr(input : real; var output : array[23] of char);
возвращает 23 символа.
Но ниже используется строка уже с 10 символами.
|
Код:
|
var ff1, ff2, ff3 : real;
txt : array[10] of char;
...
ff1 := -374.2;
ff2 := 123.456789;
ff3 := 0.000001234;
FloatToStr(ff1, txt); // txt is "-374.20001"
FloatToStr(ff2, txt); // txt is "123.45678"
FloatToStr(ff3, txt); // txt is "0.000000" |
|
|
|
|
10.10.2012, 17:23
|
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: Согласование RS485
Сообщение от Boba_spb
|
|
Глянул строковую переменную в паскале. Там символы идут в масссиве со второго байта, в первом байте скорее всего длина строки спрятана
|
Так и есть в нормальном Паскале. А в MicroPascal
|
|
|
|
10.10.2012, 17:33
|
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: Согласование RS485
Сообщение от swat24
|
|
Но ниже используется строка уже с 10 символами.
|
Там же сказано, что перед выполнением функции FloatToStr() переменная урезается до 7-ми значащих цифр. То есть результат преобразования может быть 7 цифр+точка+знак. Итого строка из 9-ти символов. Так что txt: string[9], никак не меньше
|
|
|
|
10.10.2012, 17:40
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Согласование RS485
поставил txt : string[10] вроде нормально. Спасибо за помощь
я почему то думал что оно урежет до требуемого количества знаков. Вроде уже не первый раз пишу, а такая ошибка только щас...
|
|
|
|
10.10.2012, 18:19
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Согласование RS485
Еще замечание - поднимать скорость до 115200 и гонять символьную информацию - это не очень кошерно.
|
|
|
|
10.10.2012, 19:01
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Согласование RS485
Boba_spb, такая скорость вынужденность. ГЕОС 1М на такую скорость настроен, поэтому пока подвязываюсь под него. Как получится перенастроить уменьшу... Он еще и на два стоповых бита настроен...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:55.
|
|