zoukankan      html  css  js  c++  java
  • VS2008 开发的Wince程序 部署运行时出现UnmarshalStructInfoForm 错误

                前年用vs2008开发wince 追溯程序的时候,因为人家设备提供商给了技术支持,而且程序一路使用都比较顺利,除了无线条码打印开发遇到点困难之外。再有就是一开是用wince上的sql server存储数据,但是后来发现这是一个严重的错误,因为设备是分布在各个工厂,而且wince 这个系统冷启动之后什么都恢复了,这里说一下我开始用的设备是mc3090,所以后来考虑使用webservice来做这个数据 访问和存储的,这样可以实施分布式同步。

              可是最近,公司成品仓库也要使用移动设备出库,所以也买了一个同样的设备,当我帮助销售组在设备上开发布置的时候,我考虑都没有考虑就把程序布置上去了,可是一运行不行错了。运行到myreader.Actions.Enable的时候,出现了UnmarshalStructInfoForm错误,但是网上找好久的,都没有有解决答案,而且很多开发者因为自己解决了这个问题,很简单的就讲解一下。

              不过我也找到了根本原因那就是:我现在MC3100是MC3090的升级版,系统是wince6.0的而之前是5.0的。说要下载emdk,EMDK其实是SMDK的一个升级版,这里我就很纳闷,你说软件至少要有一个向前兼容吧,也许跟android一样2.3到4.0的时候也会来个质的飞跃,但是android是性能上的提升啊。

              好吧速度去找emdk的下载地址,果然网上有很多,去摩托罗拉的官网吧,真是病急乱投医下载了一个EMDK for .NET v2.1,悲剧了,按照网上的步骤,怎么也没有解决,有点气馁啊。

              终于在msdn上找到答案了:http://social.msdn.microsoft.com/Forums/zh-CN/windowsembeddedcezhchs/thread/fce5059a-7f59-4ae2-b58f-f1edca29df47,人家说要装emdk,我一开始以为要装到wince上,但是想想不对,java c#开发sdk都是装在我们电脑上的,而且如果装在设备上,冷启动不是要重装吗。

                  下载emdk:https://docs.symbol.com/KanisaPlatform/Publishing/465/13209_f.html?userId=37

    然后装电脑上,赶快运行看看吧。。

              

     1 using System;
     2 using System.Linq;
     3 using System.Collections.Generic;
     4 using System.ComponentModel;
     5 using System.Data;
     6 using System.Drawing;
     7 using System.Text;
     8 using System.Windows.Forms;
     9 
    10 namespace test1
    11 {
    12     public partial class Form1 : Form
    13     {
    14         Symbol.Barcode.Reader myReader;
    15         Symbol.Barcode.ReaderData myReaderData;
    16         public Form1()
    17         {
    18             myReader = new Symbol.Barcode.Reader();
    19             myReaderData = new Symbol.Barcode.ReaderData(
    20                 Symbol.Barcode.ReaderDataTypes.Text,
    21                 Symbol.Barcode.ReaderDataLengths.DefaultText);
    22             myReader.Actions.Enable();
    23             myReader.Actions.Read(myReaderData);
    24             InitializeComponent();
    25         }
    26     }
    27 }

    好期待啊,应该完成了吧,可是,错误还是出现了,好气馁啊。
    搜索继续找答案,找到了,我们还是要在设备上安装一个组件symbol.all.arm.cab,找到我们emdk的安装目录:

    D:\Program Files\Motorola EMDK for .NET\v2.5\Windows CE\MassDeployment\CE.NET,下面有我们需要安装的组件。

    把这个组件拷贝到我们wince设备上,然后在设备上安装,如果是安装emdk for .net 2.1的时候会提示与系统不兼容,安装完之后,我们还要把两个程序集拷贝到我们项目下面(这个一般在wince \windows目录下面),Symbol.ddl,Symbol.Barcode.ddl。然后再运行上面这段程序,终于成功了(现在想想这种打补丁的方式开发系统还是真讨厌,不过目前我们软件开发好多都是打补丁式的升级)。最近老忙了,幸好周末有时间,记录下来,希望对大家有帮助。

    有错误的地方欢迎大家拍砖,希望交流和共享。
  • 相关阅读:
    informix 外部表 pipe
    关于XML的一些解析操作
    oracle 导出导入数据库
    判断请求访问的浏览器类型设备
    git与SVN的区别
    Java获取文件路径
    <DIV>内容显示隐藏功能实现
    文件下载
    文件上传
    记录启动Nginx启动失败
  • 原文地址:https://www.cnblogs.com/MR_ke/p/2533073.html
Copyright © 2011-2022 走看看