在ce5下如何建立和设置GPRS 拨号链接

lenux 2008-06-11 05:00:47
wince5
vc++2005
GSM modem

在“控制面板”-“网络和拨号链接”中已有名为“GPRS”的拨号链接,
并且手动点击该链接能正常上网的情况下。
我在程序中也能通过rasdial函数来通过这个名为“GPRS”的拨号链接
和网络建立链接。

我的问题是:
如果没有名为“GPRS”的拨号链接,或者这个链接不能正常上网的情况下,

我应该通过代码来建立一个正常的名为“GPRS”的拨号链接。

我现在已经能够建立一个名为“GPRS”的拨号链接(RasSetEntryProperties),但是总是设置不对.

每次拨号都显示opening port,然后约几十秒后弹出this port is not
available,another program may be using it

或者说波特率不对。

但是我把每个波特率都试了一遍都不行。

哪位大侠知道,给个建议。

...全文
748 29 打赏 收藏 举报
写回复
29 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
boxr 2009-09-01
good
  • 打赏
  • 举报
回复
scutLiu 2008-11-12
mark
  • 打赏
  • 举报
回复
dding 2008-08-28
不错,公司也要做,先顶一下
  • 打赏
  • 举报
回复
loong115 2008-08-27
ding
  • 打赏
  • 举报
回复
lenux 2008-06-30
RasSetEntryProperties终于设置对了。

DWORD RasSetEntryProperties(
LPWSTR lpszPhoneBook,
LPWSTR szEntry,
LPRASENTRY lpbEntry,
DWORD dwEntrySize,
LPBYTE lpb,
DWORD dwSize
);
发现该api的lpb参数在不同的设备上会不一样。
所以最好的方法就是拿到一个设备,从注册表上把gprs的devconfig读取出来,根据它调整一下lpb的结构。
然后就能正确建立/修改 拨号链接了。


P.S.
还是找了一台好的设备,看了一下注册表才搞定,感谢借设备的同志。

typedef struct { //Offset
unsigned short Reserved1; // 0x00, 通常为0x20
unsigned short WaitForCreditCard; // 0x02
unsigned short CancelTimeOut; // 0x04
unsigned short Reserved2; // 0x06
unsigned char Test1; // 0x08
unsigned char Test2; // 0x09
unsigned short Reserved3; // 0x0A
unsigned int BaudRate; // 0x0C
unsigned short Terminal; // 0x10, 通常为0, 1, 3, 7
unsigned char DataBits; // 0x12
unsigned char StopBits; // 0x13
unsigned char Parity; // 0x14
unsigned char FlowControl; // 0x15
TCHAR AtCmd[115]; // 0x16, 可能后面还有别的结构,但我尝试几次都没有看到后面有有效值,因此笼统定义为附加指令
} sDevConfig;

这个结构是从
http://blog.csdn.net/caicaileowince/archive/2007/10/15/1826479.aspx
里找的。
现在发现AtCmd之前的字节总数是对的,但是描述完全不一致。
明天把我的结构发出来吧。
AtCmd后面的结构我也没有发现其它信息,附加命令后全是\0,而且删除后也没有问题。
  • 打赏
  • 举报
回复
lenux 2008-06-20
现在还没有时间做呢。
这个是业务娱乐。
主业要紧啊。
  • 打赏
  • 举报
回复
shuiyan 2008-06-20
lenux,现在直接对串口配置效果如何?用AT命令直接进行GPRS连接测试如何?
  • 打赏
  • 举报
回复
lenux 2008-06-18
[Quote=引用 18 楼 shuiyan 的回复:]
引用 16 楼 lenux 的回复:
createfile后不是可以设置一些dcb等的参数吗。
这些属于硬件参数,使用RasSetEntryProperties总是设置不成功。
所以这样直接打开串口设置,可能只能是临时设置一下,但是也是能用就行了。

不知道有没有其它想法。

哦,你是怀疑串口的基本配置不成功啊?那其实找一个串口测试程序,配置好,打开这个串口,看看能不能用就行了。倒也没有必要用GPRS验证程序去测试的。
RasSetEntryPropert…
[/Quote]

RasSetEntryPropert设置不成功

设置完后,在建立的拨号链接上看属性,并没有看到设置的附加命令。
而在正常的拨号链接上是有附加命令的
  • 打赏
  • 举报
回复
YuanQF2002 2008-06-18
最近,也在研究相关问题,不过没有你们专业,特来此向大家求解,我想问下,如何编程通过NDIS或RIL去访问EVDO(3G)或GPRS网络,谢谢!!
  • 打赏
  • 举报
回复
fishly_0 2008-06-18
gprs拨号有一个at指令可以设置apn等信息,不知道cdma有没有了?我现在在研究怎么用cdma模块拨号上网,对这方面有了解的兄弟说下了,网络上对于cdma模块拨号上网的资料似乎很少啊,。刚好这个帖子是讨论这个的,借个地方,呵呵。
想去找找RasDial的源代码,看看系统到底做了些什么或者说执行了哪些at指令,可以拨上去。

每次拨号都显示opening port,然后约几十秒后弹出this port is not
available,another program may be using it
这个问题应该是波特率设置不对引起的,前两天我研究gprs拨号上网时也是这样,波特率设定为115200时,我在控制面板建立的gprs拨号连接拨号时一直提示打开端口错误,后来改了波特率就可以了。
  • 打赏
  • 举报
回复
lenux 2008-06-17
createfile后不是可以设置一些dcb等的参数吗。
这些属于硬件参数,使用RasSetEntryProperties总是设置不成功。
所以这样直接打开串口设置,可能只能是临时设置一下,但是也是能用就行了。

不知道有没有其它想法。
  • 打赏
  • 举报
回复
sinpo1984 2008-06-17
如何在WINCE4.2/WINCE5.0中“永久”保存设置(保存注册表的方法)

参考的一篇(原连接无效,换上立宇泰的连接):

http://www.hzlitai.com.cn/article/ARM9-article/cphelp/20061013319.html


另一篇好文章在“技术频道”里(WINCE4.2下的修改看它就OK了):


http://www.hzlitai.com.cn/article/ARM9-article/cphelp/200706221551350.html

谢谢大家支持,下面分享一下我在WINCE5。0下做好保存设置的方法(用的ARMSYS2440平台,很简单哦,理论的东西就不多说了,上面两篇文章讲得比较清楚了):

第(1)步,在当前Platform下加入Hive-based Registry的支持;

第(2)步,在注册表platform.reg中查找“; HIVE BOOT SECTION”,有两处,在第二处(原来是:IF BSP_NONANDFS !的地方),将; HIVE BOOT SECTION 和 ; END HIVE BOOT SECTION之间的内容替换成:

[HKEY_LOCAL_MACHINE\init\BootVars]
"SystemHive"="system.hv"
"Start DevMgr"=dword:1
"RegistryFlags"=dword:1
[HKEY_LOCAL_MACHINE\init\BootVars]
"DefaultUser"="default"

IF BSP_NONANDFS !
[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH]
"DriverPath"="Drivers\\BuiltIn\\SMFLASH"
; LoadFlags 0x01 == load synchronously
"LoadFlags"=dword:1
"BootPhase"=dword:0


[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SMFLASH]
"Prefix"="DSK"
"Dll"="smflash.dll"
"Index"=dword:1
"Order"=dword:0
"Profile"="SMFLASH"
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"Flags"= dword:1000 ;;;;;;;;;;

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH]
"DefaultFileSystem"="BINFS"
"AutoPart"=dword:1
"AutoMount"=dword:1
"PartitionDriver"="mspart.dll"
"Name"="Microsoft Flash Disk"
"Folder"="ResidentFlash"
"BootPhase"=dword:0
"MountFlags"=dword:2
"Flags"= dword:1000 ;;;;;;;;;;

; Keep FATFS from trying to shadow \Windows
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\FATFS]
"Flags"=dword:14
"FormatTfat"=dword:1
"CheckForFormat"=dword:1

[HKEY_LOCAL_MACHINE\System\StorageManager\FATFS]
"Flags"=dword:00000014 ;FATFS_TFAT_ALWAYS|FATFS_FORCE_TFAT
"MountFlags"=dword:0

ENDIF ; BSP_NONANDFS
; END HIVE BOOT SECTION

第(3)步,最后一步,重新Sysgen(要选择clean before building),最后build BSP,makeimg。

这里贴一个已经修改好的platform.reg,供大家参考:

http://www.hzlitai.com.cn/bbs/viewFile.asp?BoardID=11&ID=712

  • 打赏
  • 举报
回复
shuiyan 2008-06-17
[Quote=引用 16 楼 lenux 的回复:]
createfile后不是可以设置一些dcb等的参数吗。
这些属于硬件参数,使用RasSetEntryProperties总是设置不成功。
所以这样直接打开串口设置,可能只能是临时设置一下,但是也是能用就行了。

不知道有没有其它想法。
[/Quote]
哦,你是怀疑串口的基本配置不成功啊?那其实找一个串口测试程序,配置好,打开这个串口,看看能不能用就行了。倒也没有必要用GPRS验证程序去测试的。
RasSetEntryProperties的设置不成功,是怎么确认的?
  • 打赏
  • 举报
回复
fangzheng2008 2008-06-17
在顶一下
  • 打赏
  • 举报
回复
zhujinqiang 2008-06-16
帮顶,学习。
  • 打赏
  • 举报
回复
lenux 2008-06-16
[Quote=引用 8 楼 shuiyan 的回复:]
CE5 下的啊,没注意,以为是WM下的呢。

如果只是参数设置,那么应该会保存在注册表里。有没有从可以正常使用的GPRS设备上,导出相关注册表进行对比呢?
[/Quote]

我导出过,但是按照里面的东西,然后自己写了结构,进行设置就是不能和它一样。也不能工作。



最近我在研究通过直接打开串口来设置一些参数。不知道行不行。
  • 打赏
  • 举报
回复
lenux 2008-06-16
[Quote=引用 7 楼 henrylee1981 的回复:]
在设置AT命令行里不要写AT,如:AT+...,只写+...就可以了,在注册表中已经默认的加如了AT字符串,这个问题曾经搞了半个月才发现.
[/Quote]
谢谢你的回答。

其实你说的这个问题是个常识问题。赫赫。
  • 打赏
  • 举报
回复
shuiyan 2008-06-16
[Quote=引用 10 楼 lenux 的回复:]
引用 8 楼 shuiyan 的回复:
CE5 下的啊,没注意,以为是WM下的呢。

如果只是参数设置,那么应该会保存在注册表里。有没有从可以正常使用的GPRS设备上,导出相关注册表进行对比呢?


我导出过,但是按照里面的东西,然后自己写了结构,进行设置就是不能和它一样。也不能工作。


最近我在研究通过直接打开串口来设置一些参数。不知道行不行。
[/Quote]
直接打开串口?是否想用AT直接进行配置?
但问题是现在原因到底是Modem没配置好?还是相应的WM下的配置未被系统确认到?如果是后者,那么你直接通过串口配置Modem也没用呀。
  • 打赏
  • 举报
回复
fangzheng2008 2008-06-16
学习一下,
  • 打赏
  • 举报
回复
xyj0663 2008-06-16
兄弟,问题解决了没有,我还在等你的程序好了给我一份,我现在只能通过注册表弄,其它办法没想出来.
  • 打赏
  • 举报
回复
加载更多回复(9)
发帖
嵌入开发(WinCE)

1.9w+

社区成员

硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
帖子事件
创建了帖子
2008-06-11 05:00
社区公告
暂无公告