C64 + DigiConnect SP сообщения отправляются в виде 1-символьных соединений вместо полных строк, используя BASIC - PullRequest
0 голосов
/ 30 декабря 2018

Использование Commodore 64 с адаптером GLINK LT RS-232, подключенным к Digi-Connect SP, сконфигурированному для отправки RAW TCP на статический IP / порт в моей домашней сети.Назначение - это процесс socat, передающий трафик в другом месте с подробным ведением журнала.

Тестирование удара socat из оболочки bash на компьютере с OS X, выдача curl http://192.168.1.91:1234 Я получаю действительный ответ, и журнал socat показывает

> 2018/12/29 22:06:50.168550  length=81 from=0 to=80
GET / HTTP/1.1\r
Host: 192.168.1.91:1234\r
User-Agent: curl/7.54.0\r
Accept: */*\r
\r
< 2018/12/29 22:06:50.169509  length=144 from=0 to=143

(followed by http response)

Но когда я запускаю следующее для SNIPPET BASIC-кода C64:

100 OPEN 2,2,3,CHR$(6)+CHR$(0)
110 GET#2,A$: REM TOSS NULL TO OPEN RCVR CHANNEL
120 PRINT#2,"GET /"
...

, журнал socat показывает:

> 2018/12/29 22:11:38.952005  length=1 from=167 to=167
G> 2018/12/29 22:11:38.983674  length=1 from=168 to=168
E> 2018/12/29 22:11:39.015464  length=1 from=169 to=169
T> 2018/12/29 22:11:39.051758  length=1 from=170 to=170
 > 2018/12/29 22:11:39.084476  length=1 from=171 to=171
/> 2018/12/29 22:11:39.117131  length=1 from=172 to=172

Я не уверен, что делаючто-то не так на стороне C64, что приводит к отправке отдельных символов или неправильной настройке Digi-Connect.

Последовательные настройки Digi:

  • Настройки клиента TCP:
    • Автоматически устанавливать TCP-соединения
      • Всегда подключать и поддерживать подключение
    • Установить подключение к следующей сетевой службе:
      • Сервер: 192.168.1.91
      • Служба: Raw TCP
      • Порт TCP: 1234
      • Включить поддержку активности TCP: Вкл.
  • Основные серийные настройки
    • Бод: 300
    • Биты данных: 8
    • Четность: нет
    • Стоп-биты: 0
    • Управление потоком: аппаратное обеспечение
  • Расширенные настройки последовательного интерфейса
    • (здесь ничего не настроено)

1 Ответ

0 голосов
/ 31 декабря 2018

Отдельные символы были красной сельдью, исправление заключается в добавлении LF (ASCII 10) в конец сообщения, чтобы нисходящий веб-сервис понимал, что сообщение завершено.

Рабочий пример:

100 OPEN 2,2,3,CHR$(6)+CHR$(0)
110 PRINT#2,"GET /"
120 PRINT#2,CHR$(10)

(также примечательно - все, что требует правильного верхнего / нижнего регистра, будет нуждаться в преобразованиях PETSCII <-> ASCII)

...