12

我们有一个解决方案,其中一些硬件连接到 Win 7 机器上的 COM 端口,并与我们的 Java 应用程序交互。硬件希望使用 PPP 服务器通过 TCP/IP 透明地连接到其他服务器。

有人对如何做到这一点有建议吗?从 Java 应用程序启动 OS 本机 PPP 服务器,并连接到 COM 端口?这是怎么做到的?

4

3 回答 3

13

您可能会惊讶地发现 Win7 仍然原生支持 PPP。

按照这些步骤(或类似的步骤),你应该很高兴。自从可能是 Win98 或 Win2k 以来,我实际上并没有执行过 PPP 连接,但这些步骤看起来与他们支持的步骤非常相似。这并不简单,但是这些应该可以帮助您完成 80% 或 90% 的工作(最后 10-20% 将是正确配置串行连接的正常毛躁刺激 - 串行通信涉及的选项太多,并且PPP 使其在第一次连接尝试时正确运行)。

  • 打开控制面板
  • 选择“电话和调制解调器”。如果它询问您位置,请输入使该对话框满意所需的任何信息(我认为它只需要您的区号,但可能不需要,或者可能是其他东西-没关系我们不会使用它)。
  • 告诉它您要安装调制解调器,如果找不到调制解调器,请不要担心 - 您将从列表中选择一个。
  • 单击“添加”按钮,并告诉它不要打扰自动检测
  • 在“(标准调制解调器类型)”下选择“两台计算机之间的通信电缆”
  • 告诉它使用什么串口

现在您需要为 PPP 连接设置“网络适配器”

  • 进入控制面板的“网络和共享中心”
  • 点击“设置新的连接或网络”
  • 选择“设置拨号连接”
  • 如果它询问您要使用什么调制解调器,请选择您刚刚设置的“两台计算机调制解调器之间的通信电缆”(除非您的计算机中有实际的调制解调器,否则不会发生这种情况)。
  • 给“创建拨号连接”对话框一个虚假的电话号码,这样它就可以让你继续......并给它一个你喜欢的连接名称,而不是“拨号连接”
  • 单击“连接”,它会尝试拨号。当然会失败。单击“仍然设置连接”

现在在新的网络适配器上配置各种 PPP 设置:

  • 单击“网络和共享中心”控制面板中的“更改适配器设置”链接
  • 右键单击您刚刚创建的网络适配器(“拨号连接”或您提供的任何名称),然后选择“属性”
  • 配置“两台计算机之间的通信电缆”(主要是让您设置速度)。查看其他选项卡,了解您可能需要控制的各种其他选项。不要忘记在“网络”选项卡上配置您可能需要的 TCP/IPv4 属性。如果您使用的是 IPv6,请确保也配置了这些内容。

一旦硬件设备建立到 Win7 COM 端口的 PPP 连接,Java 应用程序应该能够通过 PPP 链接进行通信,就好像它是一个普通的网络适配器一样。祝你好运!

于 2011-08-16T21:27:47.367 回答
1

这是使用 VirtualBox 的一种解决方法。我不知道如何在 Win7 上本地运行 PPP 服务器。

pppd - Ubuntu ttyS0 - VirtualBox Port 1 - Win7 COM1 -- RS232 -- 目标的 ppp 客户端

  1. 准备 VirtualBox 5 和 Ubuntu 16 作为 Win7 上的来宾操作系统
  2. 转到 VirtualBox 设置 -> 串行端口 -> 端口 1
    • 检查:启用串行端口
    • 端口号:COM1 IRQ:4 I/O 端口:0x3F8
    • 端口模式:主机设备
    • 检查:连接到现有的管道/插座
    • 路径/地址:COM1
  3. 打开一个 Ubuntu 终端

    • sudo apt-config 安装 ppp
    • sudo apt-get install ppp
    • sudo stty -F /dev/ttyS0 原始
    • sudo stty -F /dev/ttyS0 -a
    • sudo pppd /dev/ttyS0 115200 192.168.17.1:192.168.17.2 proxyarp local noauth nodetach dump nocrtscts passive persist maxfail 0 holdoff 1

    生效的 pppd 选项:
    nodetach #(来自命令行)
    holdoff 1 #(来自命令行)
    persist #(来自命令行)
    maxfail 0 #(来自命令行)
    dump #(来自命令行)
    noauth #(来自命令行)
    / dev/ttyS0 # (从命令行)
    115200 # (从命令行)
    lock # (从 /etc/ppp/options)
    nocrtscts # (从命令行)
    local # (从命令行)
    asyncmap 0 # (从 /etc/ppp /options)
    passive # (从命令行)
    lcp-echo-failure 4 # (从 /etc/ppp/options)
    lcp-echo-interval 30 # (从 /etc/ppp/options)
    hide-password # (from /etc/ppp/options)
    proxyarp # (from command line)
    192.168.17.1:192.168.17.2 # (from command line)
    noipx # (from /etc/ppp/options)
    Using interface ppp0
    Connect: ppp0 <--> /dev/ttyS0
    无法确定代理 ARP
    本地 IP 地址 192.168.17.1
    远程 IP 地址 192.168.17.2 的以太网地址

于 2020-05-12T17:12:56.033 回答
0

在@hari 评论的基础上使用 Googlejavax.comm我找到了关于 TINI 的教程,这可能对您的目的有用:该指南通过 COM 端口与 TINI 库进行 PPP 连接,就像您想做的那样。

于 2011-08-16T20:50:55.937 回答