嵌入开发(WinCE)的一些经验(2)

来源:互联网 发布:达索plm软件 编辑:程序博客网 时间:2024/05/21 01:46

 球第一款中文Windows手机,dopod具有强大的功能:配备Intel SA-1110CPU,主频为206MHz,运算能力相当于PII。内存采用32兆/64兆SDRAM,32兆/64兆闪存。配备SD卡接口,可以用SD卡实现存储扩容。显示屏规格为3.5" 240x320 pixels, 4096彩色反射式TFT。内置GSM/GPRS模块,分别支持900/1800MHz的GSM和GPRS无线通信功能。在基本应用程序方面,dopod686类似其他采用PocketPC操作系统的高端掌上电脑,具有Pocket Word、Pocket Excel、Pocket TV以及Windows MediaPlayer等功能。支持中文连笔手写识别,并可以做到中英文混合识别。通过MicrosoftActiveSync可以与PC同步进行数据传输。也可以通过红外接口与笔记本、其他掌上设备以及手机进行数据交换。通过类似Outlook式的联系人功能管理移动电话、电子邮件、短信等通信功能,可以方便地进行短信群发等操作。传统PDA的各种功能在dopod中仅仅能算是最为基本的功能,其最大亮点在于其强大的多媒体功能,可以非常流畅地播放音频和视频文件。

1.好像没有其它方法,为什么不用__FILE__ 中取?
2.fopen,您可以加上全路径。
3.wince2.11没有用过,但我想是支持的。在CE帮助中,一般均说明此函数从那个版本开始支持,但fopen中却没有。
4.下面是CE帮助中的一段:
CWinApp::WriteProfileString
This method writes the specified string into the specified section of the .ini file in the application.

BOOL WriteProfileString(
LPCTSTR lpszSection,
LPCTSTR lpszEntry,
LPCTSTR lpszValue );
5.不知您所用的CE版本为多少。CE3.0不支持中文,如果您所用的是3.0,那一定是OEM商汉化了CE。可能只支持一种字体;最新版.Net支持中文,有多种字体供选择。

PC与掌上电脑的串口是不是一样,这很难说。因为嵌入式开发是针对不同硬件平台进行的!
有的掌上电脑用的是标准的RS232,有的不是。
您用EVT(EVC和EVB)写的串口操作程序,可以下载到开发板上进行测试。当然开发板上需有串口硬件。






Palm OS ROM
http://www.echoice.com.cn/download/download.asp?softwareID=132

Release configurations use the following macros:
RETAILMSG(cond, printf_exp). Conditionally displays the print message.
RETAILLED(cond, parms). Conditionally outputs WORD values to the LED.
ERRORMSG(cond, printf_exp). Prints "Error: File Line" before the print message.

Toenable the debug macros, you must build a debug configuration. Debugconfigurations use the three retail macros listed above, as well as thefollowing debug macros:
DEBUGMSG(cond, printf_exp). Conditionally displays the print message.
DEBUGLED(cond, parms). Conditionally outputs WORD values to the LED.
DEBUGCHK(expr). Asserts the expression. If expr is FALSE, the macro calls DEBUGBREAK.
DEBUGZONE(zone_id). Tests the mask bit in the current debug zone settings. You can use DEBUGZONE to turn debug zones on or off.

Declare Function TranslateMessage Lib "coredll.dll" (ByVal MSG As String) As Boolean
网上down到的,有关unicode的函数集:

Attribute VB_Name = "modUniCode"
Option Explicit
Public Function MemStringToLong(StringIn As String) As Long
  On Error Resume Next
  Dim hWorkVal As String
  ' Convert the String back to Long Integer.
  ' Converting back to Big Endian format.
  Dim i As Long
  For i = 4 To 1 Step -1
  hWorkVal = hWorkVal & Hex(AscB(MidB(StringIn, i, 1)))
  Next i
  ' Return Long Integer value.
  MemStringToLong = CLng("&H" & hWorkVal)
End Function
Public Function LongToMemoryString(ByVal lInputValue As Long) As String
Dim hWorkVal As String
Dim n As Long
Dim i As Long
' Convert to HEX value.
hWorkVal = Hex(lInputValue)
' Check to see if it is not zero.
If hWorkVal <> "0" Then
  ' Convert to memory storage format (Little Endian).
  ' For example, 0000A411 would convert to 11A40000.
  '
  ' Place leading zeros in 8 character sequence to
  ' maintain consistent character count
  n = Len(hWorkVal)
  If n < 8 Then
    hWorkVal = String(8 - n, "0") & hWorkVal
  End If
  '
  ' Use ChrB to rebuild Bytes.
  For i = 7 To 1 Step -2
    LongToMemoryString = LongToMemoryString & _
              ChrB(CInt("&H" & Mid(hWorkVal, i, 2)))
  Next i
 
Else
  ' Just return zeros.
  ' Use ChrB to build Bytes.
  LongToMemoryString = ChrB(CInt("&H00"))
  LongToMemoryString = LongToMemoryString & ChrB(CInt("&H00"))
  LongToMemoryString = LongToMemoryString & ChrB(CInt("&H00"))
  LongToMemoryString = LongToMemoryString & ChrB(CInt("&H00"))
End If
End Function


在EVC3.0下怎样使编出来的窗口最大化(占满所有屏幕),并能够将开始菜单条挡住?
BOOL SHFullScreen(
HWND hwndRequester,
DWORD dwState);
注意包含Aygshell.h
用shfullscreen产生全屏窗口,用showwindow隐藏任务条,用movewindow设置窗口大小为全屏。
代码如下:
#define MENU_HEIGHT 26
  RECT rc;
  //get window size
  GetWindowRect(hWnd, &rc);
  SHFullScreen(hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON);
  ShowWindow(hwndCB, SW_HIDE);
  MoveWindow(hWnd,
rc.left,
rc.top-MENU_HEIGHT,
rc.right,
rc.bottom+MENU_HEIGHT,
TRUE);


Windows CE 3.0 supports the standard Winsock 1.1 functions.except the asychronous functions.

eVC4:
http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28000437
Tools(For PPC2002):
http://www.microsoft.com/mobile/developer/downloads/default.asp
OR: http://www.microsoft.com/mobile/developer/default.asp
CEF:
http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/926/msdncompositedoc.xml

目前大的GIS厂商,如MapInfo和ArcInfo对Paml支持太弱了,我咨询了这两家公司,都说还没有这方面的产品,WinCE下的产品倒是到了应用层次。
国外不少公司有开发出来的产品,比如
www.GeoDiscovery.com,但是不提供二次开发接口。不知道大虾们是如何选择这方面的产品的。
电子地图:ArcInfo和MapInfo有全系列的开发包。绝对支持VS。
你打电话向ArcInfo中国代理,好像是富融科技,要一个开发包,当然是试用性质的。或者向MapInfo公司中国代理,是方正,咨询一下开发事宜。
我没有做过WinCE上的GPS和GIS开发。我做过PalmOS下的一些实验。GPS部分是通过串口和Palm连接,并且提供相应的协议,用来解释GPS信息和操纵GPS设备。这个没有什么复杂的。但是地图表现部分却苦于没有合适的地图产品。关于GPS的例子,我是从Palm应用程序的开发工具CodeWarrior的帮助文档中获得的,也就是简单的串口/端口操作,简单的监听->读->分析->表现->控制命令->写.和DOS下串口通信或者控制打印机之类的事情,没有两样。你所需要的,是你所选用的GPS设备的接口标准、开发文档。
你看看
www.supermap.com.cn的eSuperMap,能提供二次开发,具体没谈过,有什么消息也告诉我一声,我也想用他们的搞二次开发。
不过eSuperMap同时支持WinCE和Windows 98等。
帮你找到了一个地图,你可以到
www.lingtu.com.cn看看,它也支持二次开发。

这样说吧:在EVC编译程序时,有一个重要的选项,在工具栏中的WCE Configuration中。您用EVC自带的模拟器编译时,选择的是Win32 [WCE x86em] Debug/Release。若选择其它,编译时丢出错。
X86em,说明程序运行时的Micro CPU平台。正如UP所说!如果您所有的PDA不在EVC支持的范围之内,则您需要CEPB来生成支持它的SDK。安装后EVC才可以用来开发针对您所用的PDA的应用。
你把EVC的Target类型设为MIPS,然后直接debug,EVC会把XXXd.dll下载到PDA上,这样你就可以在PDA上debug了。不过这些dll挺大的,有好几M,在PDA上debug速度也很慢

http://www.eg3.com/
http://www.c51bbs.com/
www.pday.com.cn
www.move.com.cn
www.pdazone.com.cn
www.palmheart.com.cn
http://www.embed.com.cn/
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnce30/html/realtimecapabilities.asp
http://msdn.microsoft.com/downloads/default.asp?url=/downloads/topic.asp?url=/msdn-files/028/000/219/topic.xml
http://www.palm.com

<<Programming Microsoft Windows CE程序设计>>,北京大学出版社出版
<<Windows CE高级开发指南>>,电子工业出版社出版。可做为手册用!
<<Building Powerful Plarforms with Windows CE>>。最经典的。但国内可能买不到

2002-4-21(在嵌入式和Visual C++中提出下面的问题)
我做了一个应用,读出系统时间显示在6个Edit控件中;同时设置两个按键用于在得到系统时间和设置系统时间之间切换,得到系统时间时不能修改Edit中的内容。
读系统时间由一个线程来实现。

在设置系统时间时,想使用tab键在各个控件之间移动。但我为每个控件都设置了WS_TABSTOP属性后,仍然不能达到使用tab键控制焦点位置的目的!!!
请问:各个高手这是为何?

下一个:::PostMessage(hWnd, WM_NEXTDLGCTL, 0, 0);
前一个:::PostMessage(hWnd, WM_NEXTDLGCTL, 1, 0);
任意control hCtrl:::PostMessage(hWnd, WM_NEXTDLGCTL, (WPARAM)hCtrl, 1L);






模拟器中是否能使程序自起动?希望高手支招!!!
我认为不能。
在硬件平台上,可修改注册表。
例如:
[HKEY_LOCAL_MACHNE/Init]
"Launch40"="App.exe"
"Depend40"=hex:14,00

我们也用过汉王,是需要自己修改较多的东东才能过到满意的效果。
以下四点是我们修改Hwr.c的注释,我只能提供您这些!!!
1.汉王对笔迹数据的要求是在0xff以内,但触摸屏的尺寸(480X320)超过了此范围,所以要对数据进行调整,以满足任何尺寸的要求。
2.防跨屏操作
3.全屏操作
4.触屏四线不接任何电容