• OpenNETCF.Desktop.Communication.DLL程序集的使用


    命运弄人,一不小心掉进了条码行业。。。。

    条码行业目前终端操作通信方式有两种:无线通信,有限通信。终端与PC和ERP控制的数据库的数据同步是物联网,也是条码扫码等操作同步的关键。

    目前数据同步的方式有好几种,思路如下:将mobile sql 的sdf格式的数据库在PC上配置好(当然是用代码去操作了)以后,通过OpenNETCF提供的方法,同步到PDA,俗一点说,就是把带有数据的sdf 数据库拷贝到PDA上,然后,您PDA上程序就可以对该sdf数据库进行一系列操作了,相反,也可以把PDA上的sdf数据库同步到PC,用PC上的程序对sdf数据库进行操作。

    OpenNETCF.Desktop.Communication.DLL

    该程序集实现了终端与PC端文件传送的API,里面的方法如下:

    Connect 建立与设备的同步连接。
    CopyFileFromDevice 将设备中的文件复制到 PC。
    CopyFileOnDevice 将设备某个位置的文件复制到设备的另一新位置。
    CopyFileToDevice 将 PC 中的文件复制到设备。
    CreateDeviceDirectory 在设备中创建目录。
    CreateProcess 启动设备中的应用程序。
    DeleteDeviceFile 删除设备中的文件。
    DeviceFileExists 检查设备中是否存在文件。
    Disconnect 中断与设备的连接。
    EnumFiles 提供与 FileName 参数提供的条件相匹配的FileInformation 类数组列表。
    GetDeviceCapabilities 检索设备的特定设备信息。
    GetDeviceFileAttributes 检索特定设备文件的属性。
    GetDeviceFileSize 检索设备文件的大小,以字节为单位。
    GetDeviceFileTime 检索设备文件的日期时间。
    GetDeviceMemoryStatus 检索设备的内存使用信息。
    GetDeviceSystemFolderPath 检索到设备系统文件夹的路径。
    GetDeviceSystemInfo 检索设备的系统详细信息。
    GetDeviceSystemPowerStatus 检索设备的电源状态。
    GetDeviceVersion 检索设备的操作系统版本。
    MoveDeviceFile 将现有设备文件移到或重命名到一个新位置。
    RemoveDeviceDirectory 删除设备中的目录。
    SetDeviceFileAttributes 设置设备中文件的属性。
    SetDeviceFileTime 设置设备中文件的日期时间。
    上面的方法看上去多,其实常用的就那几个:
    核心代码主要有:
    private OpenNETCF.Desktop.Communication.RAPI rApi;

    rApi=new rApi();

    if(rApi.DevicePresent)   //表明当前ActiveSync是否有设备.
    {
        rApi.Connect();      //开始连接设备;
        rApi.CopyFileFromDevice("d:\\ScanData.txt", "\\Application\\ScanData.txt", true);
                             //从设备复制文件到D:盘 ,true 表示重写,false 不重写,
    }

    下面介绍使用案例,方便大家一起学习:

     //pc->pda
    public static bool DataToTermial(string LocalFile, string RemoteFile)
            {
                RAPI rapi = new RAPI();
                try
                {
                   
                    rapi.Connect(true, 100);
                    if (!rapi.Connected)
                        return false;
                    if (rapi.DeviceFileExists(RemoteFile))
                    {
                        DialogResult dr;
                        dr = MessageBox.Show("文件已存在,是否覆盖?", "提示:", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                        if (dr == DialogResult.Yes)
                            rapi.DeleteDeviceFile(RemoteFile);
                        else
                            return false;
                    }
                    rapi.CopyFileToDevice(LocalFile, RemoteFile, true);
                    rapi.Disconnect();
                    return true;
    
                }
                catch (RAPIException es)
                {
                    MessageBox.Show(es.Message);
                    return false;
                }
    
            }
    //pda->pc
            public static bool DataFromTerminal(string LocalFile, string RemoteFile)
            {
                RAPI rapi = new RAPI();
                try
                {
                    
                    rapi.Connect(true);
                    if (!rapi.Connected)
                    {
                        return false;
                    }
    
                    if (rapi.DeviceFileExists(LocalFile))
                    {
                        rapi.CopyFileFromDevice(RemoteFile, LocalFile, true);
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                catch (Exception)
                {
                    return false;
                }
            }
    

    有错的话,欢迎大家指正,转载请指明出处。

  • 相关阅读:
    自动映射失效的解决办法
    D方法 自动完成
    怎样处理包含的动态模板
    后台登陆功能的实现 SESSION
    输入框 最简单的样式
    php 添加数据库的几种方法
    php 连接数据库
    array、isset、三元运算符、find()
    foreach、count、explode(对无限级分类的语法注释-显示无限级效果)
    两种常用的启动和关闭MySQL服务
  • 原文地址:https://www.cnblogs.com/alvin_xp/p/2128042.html
Copyright © 2020-2023  润新知