使用Windows Mobile Device / Windows 7复制文件

时间:2014-04-24 18:52:23

标签: windows-mobile-6.5 rapi

我为摩托罗拉MC3190移动设备编写了一个非常简单的库存跟踪应用程序。 我需要与设备和Windows 7 PC之间传输数据。

我已经在互联网上搜索了如何做到这一点,但到目前为止还没有任何效果。 我是开发移动应用程序的新手,对C#知之甚少。 (足以开发一个简单的数据捕获应用程序)。

我已下载并安装了Windows Mobile设备中心,Windows Mobile 6 SDK和OpenNETCF智能设备框架,以便访问RAPI。我知道远程设备通过Windows Mobile设备中心正确连接,VS2008能够将我的解决方案部署到设备。我也可以通过Windows Mobile设备中心手动来回复制文件。

到目前为止我尝试的是:

添加OpenNetCF.Desktop.Communications Refernce

使用过的代码如下:

        using (RAPI rapi = new RAPI())  <--- Error Occurs (Cannot Find PInvoke.dll in RAPI.dll)
        {

            rapi.Connect(true);

            rapi.CopyFileToDevice(remote_file, local_file);

            rapi.Disconnect();

        }

我在创建新的RAPI实例时遇到错误(无法在RAPI.dll中找到PInvoke.dll),因为它似乎正在尝试使用ActiveSync。我无法加载ActiveSync,因为我正在运行Windows 7。

我尝试添加以下代码:

    [DllImport("rapi.dll")]
    static extern int CeRapiInit();

然后调用

        var rapi = CeRapiInit() == ERROR_SUCCESS;  <-- Return Value is -2147024770

        if (!rapi)
            return;

        try
        {
          .. Somestuff
        }
        finally
        {
            CeRapiUninit();
        }

看来RAPI无法找到远程设备。 我已经查看了pget和pput函数的一些选项,但它们也在CeRapiInit调用中废弃了。也许我可能根本无法使用RAPI

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

如果您使用的是Windows Mobile 6.5,我建议您使用RAPI2,以及codeplex上提供的包装:https://rapi2.codeplex.com/

我过去使用过它,它很完美。在这里,您应该看看以下方法:

CopyFileFromDevice
CopyFileToDevice

可以像文档中所示快速使用它们:

using (RemoteDeviceManager r = new RemoteDeviceManager())
{
   using (RemoteDevice dev = r.Devices.FirstConnectedDevice)
   {
      if (dev == null)
         return;

      // Device information
      Console.WriteLine(dev.Name + ":" + dev.Platform);
      Console.WriteLine("Remaining power: {0}%", dev.PowerStatus.BatteryLifePercent);

      // Manipulate local and device files & directories
      string myDocs = dev.GetFolderPath(SpecialFolder.MyDocuments);
      string deviceFile = myDocs + @"\Test.txt";
      string localFile = System.IO.Path.GetTempFileName();
      System.IO.File.WriteAllText(localFile, "Testing. 1. 2. 3.");

      RemoteFile.CopyFileToDevice(dev, localFile, deviceFile, true);
      RemoteFile.CopyFileFromDevice(dev, myDocs + @"\Test.txt", localFile, true);
   }
}

答案 1 :(得分:0)

错误-2147024770代码表示&#34;找不到模块&#34;,但这并不意味着找不到设备。

RAPI使用不会出现问题ActiveSync和WMDC是同一个术语的两个术语。

我在Win7 x64 PC上使用AS / WMDC运行C / C ++应用程序:http://www.hjgode.de/wp/2012/03/28/mobile-development-autohide-windows-mobile-device-center-2/

我也从OpenNetCF.Desktop.Communication开始,但它表现不好,所以我转到了C / C ++。