我正在尝试使用usb和ppp从我的Android设备连接到主机.
似乎有一个可以使用的选项"adb ppp".但我找不到如何使用它的解释.这里有一个古老的讨论.但他们结束了修补adb.我不敢相信现在还没有解决这个问题.
http://forum.xda-developers.com/showthread.php?p=4537323
这是adb命令的解释,这是我能够找到的所有文档.
networking: adb ppp [parameters] - Run PPP over USB. Note: you should not automatically start a PPP connection. refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1 [parameters] - Eg. defaultroute debug dump local notty usepeerdns
我不清楚tty的论点是什么.看看源代码,它似乎是一个服务,如"shell","host:version"等.或者它可能(如文档所述)dev:/ dev/*但我不知道使用哪个.
此外,该命令似乎在主机中分叉ppp.但是,我不知道它是如何在Android设备上运行的.
对于那些没有阅读过代码完成2的人来说,伪代码编程过程基本上是一种设计例程的方法,首先用简单的英语描述它,然后逐步修改为更详细的伪代码,最后编写代码.这样做的主要好处是通过自上而下而不是自下而上构建系统来帮助您保持正确的抽象级别,从而在不同的层中构建一个干净的API.我发现TDD在这方面效果较差,因为它过于注重做最低限度的测试以通过并鼓励一点点前期设计.我还发现,必须为不稳定的代码(不断重构的代码)维护一套单元测试是非常困难的,因为通常情况下你需要对例程进行十几次单元测试,只需要一次或两次.当您进行重构时 - 例如更改方法签名 - 您所做的大部分工作是更新测试而不是更新prod代码.在组件的代码稳定了一点之后,我更喜欢添加单元测试.
我的问题是 - 那些尝试过两种方法的人,你更喜欢哪种方法?
我们有一个解决方案,其中一些硬件连接到Win 7机器上的COM端口,并与我们的Java应用程序交互.硬件想要使用PPP服务器通过TCP/IP透明地连接到其他服务器.
有人有关于如何做到这一点的建议吗?从Java应用程序启动OS本机PPP服务器,并连接到COM端口?这是怎么做到的?
PPP和tun/tap有什么区别?两者似乎都是用于在用户空间程序上实现网络.
使用PPP,内核创建ppp%d供使用,让用户空间程序为它提供后端.
使用tun/tap,内核创建tun%d供使用,让用户空间程序为它提供后端...
将程序从使用tun/tap (我的Android设备上似乎不可用)更改为ppp 有多难?
查看数据链路级标准,例如PPP 通用帧格式或以太网,如果校验和无效,则不清楚会发生什么.协议如何知道下一帧开始的位置?
它只是扫描下一次出现的"旗帜"(在PPP的情况下)?如果是这样,如果数据包有效负载恰好包含"标志"本身会发生什么?我的观点是,无论是使用数据包成帧还是使用"长度"字段,都不清楚如何从无效数据包中恢复,其中"长度"字段可能已损坏,或者"成帧"字节恰好可能是其中的一部分.包有效载荷.
更新:我通过查找"基于GFP CRC的框架"找到了我正在寻找的东西(这不是我要求的严格意义).根据通信网络
GFP接收器通过三态过程同步到GFP帧边界.接收器最初处于寻线状态,它一次检查四个字节,以查看在前两个字节上计算的CRC是否等于接下来两个字节的内容.如果没有找到匹配,则GFP向前移动一个字节,因为GFP假定物理层给出八位位组同步传输.当接收器找到匹配时,它移动到预同步状态.当处于该中间状态时,接收器使用临时PLI(有效载荷长度指示符)字段来确定下一帧边界的位置.如果已经实现了成功帧检测的目标数量N,则接收器进入同步状态.同步状态是接收器检查每个PLI的正常状态,使用cHEC(核心报头错误检查)对其进行验证,提取有效负载,然后进入下一帧.
简而言之,每个数据包以"长度"和"CRC(长度)"开头.不需要转义任何字符,并且数据包长度是提前知道的.
数据包框架似乎有两种主要方法:
前者更安全,后者更有效.如果有效载荷恰好包含有效数据包并且线路损坏导致前进字节包含"帧起始"字节序列但听起来非常不可能,则两者都容易出错.很难找到GFP稳健性的硬数字,但许多现代协议似乎都在使用它,因此人们可以假设他们知道自己在做什么.
我已经设置了一个 ITEAD sim900 GSM 模块来连接树莓派。我相信当我得到这些结果时,我已经通过 wvdial 建立了到 AT&T 的 gprs 连接。
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: AT+CGDCONT=1,"IP","Broadband"
AT+CGDCONT=1,"IP","Broadband"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT
--> Carrier detected. Starting PPP immediately.
--> Starting pppd at Thu Aug 14 05:49:20 2014
--> Pid of pppd: 2794
Run Code Online (Sandbox Code Playgroud)
我一直在互联网上寻找一些我遇到的问题的答案,但我似乎找不到任何答案。对以下问题的任何帮助将不胜感激!谢谢!
我有三个问题,有些问题可能很愚蠢,因为我对这个领域很陌生。
我真的连接到 AT&T 的 GPRS 网络了吗?
我怎样才能让这个模块(串口/dev/ttyAMA0)成为我的默认互联网连接?我的意思是我希望所有互联网流量都通过这个调制解调器(网上冲浪、电子邮件等)。我通过 ssh 连接到 Raspberry,所以我必须激活以太网或 wifi 才能访问计算机——我目前正在使用以太网。在我以上面显示的方式通过 wvdial 连接并禁用所有其他互联网资源后,我无法访问。它似乎仍在寻找活动的以太网端口以获取数据(我可能错了)。
对于我的项目,我需要将 sim900 调制解调器作为互联网接入点,但我还需要能够通过无法访问互联网的 wifi 连接到 LAN。这可能吗?
我的同事和我正在开发GPRS MODEM市场,寻找适合嵌入式Linux使用的模块.在市场扫描期间,我们看到几家供应商强调他们的MODEM包括嵌入式TCP/IP堆栈.
这让我想知道:当我们使用已经包含TCP/IP堆栈并使用PPP连接的嵌入式Linux时,它是否会使用GPRS MODEM中包含的堆栈?
我目前的假设是包含堆栈,用于不提供自己的堆栈的微控制器操作系统.此外,一些MODEM允许在MODEM基带处理器中运行小型应用程序,这可以解释嵌入式堆栈......
那么:GPRS MODEM提供的TCP/IP堆栈在与HL OS一起使用时是多余的还是我忽略了什么?
是否有适用于 Linux 的串行协议允许多个设备通过串行接口(共享串行总线)使用 TCP/IP 进行通信。
我的理解是 PPP 仅适用于两个设备通过串行(客户端/服务器)进行通信。我正在寻找一种适合通过多点串行总线传输 TCP/IP 的低级协议(我只能想象使用 RS485)。
我正在尝试使用pppd和AT命令建立PPP连接.这通常适用于我当地提供商的SIM卡.然而,我收到了一位住在德国的朋友的卡片,我想从瑞士试一试,但我有一种非常奇怪的行为.
首先我无法激活错误消息(AT + CMEE),我总是收到错误消息"ERROR",尽管我之前已经激活了完整的详细信息(AT + CMEE = 2).此命令适用于我的本地提供商SIM卡...
然后,如果我检查网络状态:
AT+CGREG?
+CGREG: 1,3
Run Code Online (Sandbox Code Playgroud)
相信"3",这意味着"注册被拒绝".
当我尝试连接或分离时,我总是有一个错误而没有更多的解释(尽管AT + CMEE = 2):
AT+CGATT=0
ERROR
AT+CGATT=1
ERROR
AT+CGATT?
+CGATT: 0
OK
Run Code Online (Sandbox Code Playgroud)
我可以用AT命令发送短信!将SIM卡放入手机,我无法拨打任何电话!
那么是否可以发送短信而无需注册到网络?是否可能在SIM卡上停用错误消息报告?我想知道这是配置问题,SIM卡问题还是提供商问题......
编辑
如果这可以帮助某人.当我使用我工作的SIM卡从网络中分离时,我尝试发送短信,它有效!相信这个网站我想我的朋友没有支付账单或我的本地网络提供商拒绝我使用其网络...
所以我在linux下使用蜂窝调制解调器运行PPP.我正在编写的程序在发送任何数据之前需要知道链接是否处于活动状态.
我有什么选择可以检查
另外,重启它的最佳方法是什么 - 我希望程序控制它何时启动和停止,所以我认为init.d不合适.使用system()似乎没有给出PID,还有其他选项fork()和一堆exec??()电话吗?
C on Linux on ARM(使用buildroot进行自定义分发).
在我的STM32F7上,我必须使用串行端口连接3G调制解调器.我可以使用AT命令与调制解调器通信.我想使用LWIP的PPPos(PPP over serial)库进入PPP模式.所以我仔细看看官方文档
http://lwip.wikia.com/wiki/PPP
和
https://github.com/tabascoeye/lwip/blob/master/doc/ppp.txt
我理解指南,但我真的很惊讶没有串口的实现示例.实际上,我认为有很多调制解调器都有串行接口,所以我想我可以很容易地找到一个使用的例子.
有人已经这样做了或有一个例子吗?
ppp ×11
linux ×3
tcp ×3
gprs ×2
serial-port ×2
adb ×1
android ×1
at-command ×1
bus ×1
c ×1
c++ ×1
embedded ×1
ethernet ×1
java ×1
lwip ×1
modem ×1
networking ×1
pseudocode ×1
raspberry-pi ×1
sim-card ×1
sim900 ×1
stm32 ×1
tdd ×1
tun ×1
windows ×1