C#调用webservice开发扫码枪(基恩士)

浏览: 131 发布日期: 2017-12-26 分类: oracle

开发环境搭建

1、安装扫码枪自带的Virtual PC 2007虚拟机(PCEmulator_BTW80);
不同版本虚拟机显示大小以及是否带网络不太相同。

2、设置虚拟机网络,打通本机与虚拟机网络;
虚拟机网络设置多重方式,以下设置为本次使用的方法。

3、安装IIS并运行本环境需要的webservice;
IIS的安装参考其他网上文章

4、安装Microsoft Visual Studio 2008(高版本没找到嵌入式开发调试功能),设置外部调试程序;
选项——设备工具——设备——属性——配置——使用指定IP地址

5、运行扫码枪程序,在模拟器中验证调试自己开发的功能。

开发步骤

  1. oracle存储过程开发
    确保单独调用存储过程测试没有问题
  2. webservice接口方法开发
    通过网页直接调用新webservice方法确保新接口方法没有问题
  3. C#开发
    通过C#代码调用写好的webservice方法,使用模拟器测试没有问题

开发Demo

oracle存储过程部分

PROCEDURE Shipping_Unlock (
   user_id_ IN VARCHAR2,
   passcode_ IN VARCHAR2,
   result_ OUT VARCHAR2 )
IS
   info_            VARCHAR2(2000);
   objid_           VARCHAR2(2000);
   objversion_      VARCHAR2(2000);
   attr_            VARCHAR2(2000);
   active_          VARCHAR2(10) := 'Active';
   cnt_             NUMBER;
BEGIN
   SELECT count(1) INTO cnt_ FROM C_CO_SHIPPING_PASSCODE_TAB WHERE UPPER(passcode)=UPPER(passcode_);
   Get_Id_Version_By_Keys___(objid_, objversion_, UPPER(user_id_));
   IF cnt_ = 1 AND objid_ IS NOT NULL AND objversion_ IS NOT NULL THEN
      Client_Sys.Clear_Attr(attr_);
      Client_Sys.Add_To_Attr('LOCK_FLAG', active_, attr_);
      Client_Sys.Add_To_Attr('LOCK_FROM_DCS', '', attr_);
      Modify__(info_,objid_,objversion_,attr_,'DO');
      result_ := 'OK';
   ELSE
      result_ := 'NG';
   END IF;
END Shipping_Unlock;

webservice部分

    [WebMethod]
    public String ShippingUnlock(String user, String pwd, String datebase, String passcode)
    {
        SqlProvider oracle = new OracleProvider();
        try
        {
            String result = "";
            String connStr = WebConfigurationManager.ConnectionStrings["OracleCkt2"].ToString().Replace("datebase", datebase).Replace("user", user).Replace("pwd", pwd);

            oracle.Connect(connStr);
            oracle.Open();
            SqlProcParameter[] ar = new SqlProcParameter[3];
            ar[0] = new SqlProcParameter("userId", user, SqlProcParameter.SqlTypes.VARCHAR2, SqlProcParameter.DirectionTypes.IN);
            ar[1] = new SqlProcParameter("passcode", passcode, SqlProcParameter.SqlTypes.VARCHAR2, SqlProcParameter.DirectionTypes.IN);
            ar[2] = new SqlProcParameter("result", result, SqlProcParameter.SqlTypes.VARCHAR2, SqlProcParameter.DirectionTypes.OUT);
            oracle.DOProcedure("IFSAPP.C_CO_SHIPPING_LOCK_API.Shipping_Unlock", ref ar);

            return ar[2].Value.ToString();

        }
        catch (Exception ex)
        {
            return "false";
        }
        finally
        {
            oracle.Close();
        }
    }

C#部分

        private void btnOK_Click(object sender, EventArgs e)
        {
            WebReference.WebService webService = new WebReference.WebService();
            string data = webService.ShippingUnlock(sfrmLogon.txtUserName.Text, sfrmLogon.txtPassword.Text, sfrmLogon.cmDatebase.Text ,this.txtPasscode.Text);
            if (data == "OK")
            {
                this.Close();
                frmCoShipping s = new frmCoShipping(sfrmLogon);
                s.Show();
            }
            else if (data == "NG")
            {
                Sound();
                frmCommonNg s = new frmCommonNg("Incorrect passcode");
                this.txtPasscode.Text = "";
                this.txtPasscode.Focus();
                s.Show();
                return;
            }
            else
            {
                Sound();
                frmCommonNg s = new frmCommonNg("Connection error");
                s.Show();
                return;
            }
        }
返回顶部