Harconen Posted January 26, 2011 Share Posted January 26, 2011 В команде nsio_write(port_id: Longint; buf: PChar; - Режет всё что в строке за байтом = "0"(ноль) всместе нулём (оно и понятно). наверное есть какие-то методы передавать всю строку "Нулями" Пишу программу на DELPHI. (Библиотека IP Serial LIB) Спасибо зареннее Всем ответившим!. C Уважением Игорь. Link to comment
Komantsev Posted January 26, 2011 Share Posted January 26, 2011 Добрый день, Сейчас нет NPort "под рукой", не помню особенностей. А что реально передается в порт после нулей? Абсолютно ничего ничего (передача просто обрывается на первом же нуле в строке)? Вообше, передача не должна обрываться при "нуле". В функции nsio_write() есть параметр len, поэтому "0" не воспринимается как конец строки. Функция считает длину строки исходя из указанной длины, а не при достижении первого "нуля". Link to comment
Harconen Posted January 28, 2011 Author Share Posted January 28, 2011 Разобрался - дело в том, что когда в процедуре обьявляется Х:PChar А потом ему присваивается нечто Чаровское обьявленное ТАМ ЖЕ, то может произойти такая картина: чар порежет всё до Нуля так как он там инициализируется, в прараметр записи попадёт его (Чара ) "порезанная длина до 0, и собственно, всё плохо... Заморачиваться с ключами компиляции не стал... просто создаю ACH: Array of Char; Сначала SetLength (ACH, 255); ACH [2]:= chr(0); и т.д. (потом уменьшаю до приемлемой длинны) в результате в параметр размерности попадает правильная цифра и строка NSIO_WRITE (...@ACH, length(ACH)); выполняется корректно; Спасбо за ответ. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now