1

使用带有 GLINK LT RS-232 适配器的 Commodore 64,连接到配置为将 RAW TCP 发送到我家庭网络上的静态 IP/端口的 Digi-Connect SP。Destination 是一个 socat 进程,通过详细日志记录将流量传递到其他地方。

在 OS X 机器上测试从 bash shell 命中 socat,发出curl http://192.168.1.91:1234I get a valid response 并且 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 代码片段上运行以下命令时:

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
    • 流量控制:硬件
  • 高级串行设置
    • (这里没有配置)
4

1 回答 1

1

单个字符是一条红鲱鱼,解决方法是在消息末尾添加一个 LF(ASCII 10),以便下游 Web 服务了解消息已完成。

工作示例:

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

(还需要注意 - 任何需要正确的大写/小写字母都需要 PETSCII <-> ASCII 转换)

于 2018-12-31T00:23:51.367 回答