2009-04-10 2 views
2

Я пытаюсь отправить что-то в последовательный порт (r232) с PHP. Я использую этот класс: http://www.phpclasses.org/browse/package/3679.htmlNon ASCII char в PHP?

Проблема в том, что я могу отправить только 1 байт. Но если я отправлю что-то вроде «1», я фактически отправляю 49 (ASCII для 1). Вместо отправки («1») я попытался отправить (1), но это не хорошо, потому что это целое число, которое имеет 2 байта. Так есть способ отправить «настоящий» символ, а не эквивалент ASCII?

+0

У меня такое чувство, что PHP не лучший язык для этого, я провел небольшое исследование и ничего не придумал. – Ross

+0

Нет «настоящего персонажа». Компьютеры понимают только 0 и 1, а не «А», «В» или «С». (Пожалуйста, прочитайте первую часть [Joel Spolskys nice, но слишком длинную статью Unicode] (http://www.joelonsoftware.com/articles/Unicode.html). Она подробно объяснит наборы символов.) –

ответ

4

Функция возвращает символ, заданный целым числом для соответствующего символа ascii.

+0

Он возвращает но в качестве строки PHP. Это не поможет OP –

+0

Не принимает ли библиотека строку PHP? Он передает его в fwrite ... – Mark

+0

Точнее: 'chr' превращает целое число в байт. – Gumbo

0

Похоже, что библиотека ожидает ввода символов. Если вам нужно отправить символ, который будет кодироваться до 0x01, вы просто отправляете «\ 001». Функция chr() преобразует символы в целые значения и не будет использоваться здесь.

Еще одна вещь: размер байтов целых чисел зависит от базовой системы и составляет в основном 4 байта.

+0

Не так. ord() преобразует символы в целые значения, а chr() делает обратное. – Mark

0

Я не уверен, чего вы пытаетесь достичь. Вы пытаетесь отправить целое число 1? Не знакомы с классом, пытались ли вы дать только значение 1 в качестве аргумента? Если это не сработает, попробуйте обернуть его с помощью функции chr().

Смежные вопросы