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: включено
- Автоматически устанавливать 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)