LINUX.ORG.RU

Non-ASCII символ в документации к протоколу

 , ,


0

3

Читаю ман по Wayne Kerr 6500B, раздел 11-18. Протокол SCPI. Дается таблица выставления режима:

:METER

FUNC:1
FUNC:2

L
C
Q
D
R
X
Z
Y
Θ
B
G

Как только увидел Тету - сразу офигел. Каким образом мне её сокетом отправить?

Сейчас так:

QString FoxTCP::send(QString message)
{
    QByteArray dataout(message.toLatin1());
    QByteArray datain;

    if (socket->write(dataout) > 0)
    {
        socket->waitForBytesWritten(DEFAULT_WRITE_TIMEOUT);
        socket->waitForReadyRead(DEFAULT_READ_TIMEOUT);
        while (socket->bytesAvailable() > 0)
        {
            datain.append(socket->readAll());
        }
        return QString(datain.data());
    }
    else
    {
        return QString("");
    }
}
Ясен перец, что так все теты и иже с ними конвертируются в "?".

Что посоветуете поменять тут, чтобы тета до прибора все таки дошла?



Последнее исправление: inn (всего исправлений: 1)

Вангую, что это не тета, а какой-то байт. Просто он в доках отображается/напечатан тетой.

nanoolinux ★★★★
()

Подозреваю, что это не тета, а перечёркнутый ноль, чтобы с буквой O не путать.

O02eg ★★★★★
()
Ответ на: комментарий от inn

А я разве утверждал что это ноль или буква о? Это вообще может быть байт 254. Или любой другой. Просто в кодировке того, кто готовил документ (я так понял это отпечатаный документ) 254 было буквой тета например. Баг в документации короче.

nanoolinux ★★★★
()
Ответ на: комментарий от inn

не ноль и не «О»

осталось 253 варианта байта, в чем проблема?

anonymous
()

разве вместо этих букв не отправляются значения?

former_anonymous ★★★
()
Ответ на: комментарий от inn

Во-первых весь документ это сплошное объяснение параметров.

Во-вторых фи это произвольный угол, а читать формулу нужно в комплексе. (90-Θ), емнип означает опережение на 90 градусов.

ziemin ★★
()
Ответ на: комментарий от ziemin

При чем здесь формула, если тета - именование параметра, который вычисляется прибором?

inn
() автор топика
Ответ на: комментарий от inn

Прибор делали греки и у них 254 это тета например.

Чувак, не гони. Тебе уже разов 10ть сказали, что это какой-то байт. Сдампь поток и посмотри hexdump’ом.

nanoolinux ★★★★
()
Последнее исправление: nanoolinux (всего исправлений: 1)
Ответ на: комментарий от inn

При чем здесь формула...

Ты на какой документ дал ссылку, тот я и комментирую. Ну и да:

, если тета - именование параметра, который вычисляется прибором?

Так я же и сказа, что прозвольный угол.

ziemin ★★
()
Ответ на: комментарий от inn

Протокол SCPI

Я сейчас накапитаню наверное, но на случай если ты серьёзно, то:

Тебе надо найти место где по протоколу эту тету тебе в комп шлют. Через что девайс к компу подключён? Если езернет, то tcpdump; если rs232, то вылавливай чтение из /dev/ttyS* strace’ом (хотя это хардкор наверное).

говорят, socat ещё очень хороший инстумент для этих целей. мопед не мой если что.

nanoolinux ★★★★
()
Последнее исправление: nanoolinux (всего исправлений: 1)
Ответ на: комментарий от inn

сам напиши консольую читалку/писалку.

int main()
{
  open(..);
  read(...);
  write(...);
  close(...);
}
долго что-ли?

nanoolinux ★★★★
()
Последнее исправление: nanoolinux (всего исправлений: 1)
Ответ на: комментарий от nanoolinux

где по протоколу эту тету тебе в комп шлют.

В комп - нигде. Эта зараза на запрос «что сейчас установлено» отвечает не символ, а индекс. А устанавливать по индексу не хочет.

anonymous
()
Ответ на: комментарий от anonymous

напиши сюда дамп обмена с устройством

anonymous
()
Ответ на: комментарий от inn

Тогда боюсь тебе либо надо все аски символы перебирать, либо написать письмо разработчику. Железку надеюсь за деньги покупали?

nanoolinux ★★★★
()
Ответ на: комментарий от proud_anon

Если не пойдёт, то попробуй 0xF8 — это та же буква в нижнем регистре. Между прочим, их номера в UCS совпадают с их кодами в ISO Latin-1.

proud_anon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.