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

Использование 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)

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

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
      • Сервис: сырой TCP
      • Порт TCP: 1234
      • Включить поддержку активности TCP: включено
  • Основные серийные настройки
    • Бод: 300
    • Биты данных: 8
    • Четность: нет
    • Стоп-биты: 0
    • Управление потоком: аппаратное обеспечение
  • Расширенные настройки последовательного интерфейса
    • (здесь ничего не настроено)

1 ответ

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

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

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

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

Другие вопросы по тегам