嵌入式系统难免要和上位机PC进行数据交换,小数据用TCP/IP实现就可以了,大文件,动则几百兆的数据,用Tcp/Ip自己实现有点划不来,所以我一般采用了Ftp上传的功能,在嵌入式组态软件的下载功能中就实现了组态的Ftp上传,目前正在升级改造的北京隧道广告系统的通信系统也是采用Ftp上传功能进行节目(大约7百兆的数据)下载的。
.net系统实现FTP客户端的功能是非常容易的,下面是简单的实现代码:
//FTP
private WebClient client = new WebClient();
if (File.Exists(@strIOFile) == true)
{
try
{
lstInfo.Items.Insert(0, DateTime.Now.ToString() + " : 开始下载IO配置文件 ...");
Application.DoEvents();
client.UploadFile(URL + @"/parini.ini", @strIOFile);
lstInfo.Items.Insert(0, DateTime.Now.ToString() + " : IO配置文件下载完毕");
}
catch (WebException exp)
{
lstInfo.Items.Insert(0, DateTime.Now.ToString() + " : 错误:" + exp.Message);
btnDown.Enabled = true;
btnOK.Enabled = true;
return;
}
}
在做FTP上传功能,有一项是必须要知道的,那就是FTP Server的根目录,由于触摸屏是我们自己开发的,直接跟硬件部门提出FTP Server的根目录是什么就行,有他们定制即可。但是在隧道系统系统,下位机是Moxa的设备,并且FTP Server的根目录有可能是外插的CF卡,还好Moxa的设备FTP Server的根目录就是WinCE的根目录,这样外接设备的盘符(或目录)就能动态的出现在FTP Server的根目录之下了,不需要进一步进行调整了。
这里也学到了一点FTP Server的根目录的相关知识,当然这点知识对FTP行家不算什么,但是对我这类用户是非常有用的。
FTP Server的根目录的设定在注册表HKEY_LOCAL_MACHINE/Comm/FTPD选项下面,“BaseDir”和 “DefaultDir”,“BaseDir”我不知道起什么作用,上网也没有查出一个所以然来,“DefaultDir”这项就是根目录设置项,如果设为“/”表示为设备根目录,否则可以直接设相应目录,如“/HardDisk”,下面我是用我们的触摸屏做实验的,截图如下:
根目录为"/HardDisk"
根目录为"/"
[叶帆]http://blog.csdn.net/yefanqiu/