开发环境搭建
1、安装扫码枪自带的Virtual PC 2007虚拟机(PCEmulator_BTW80);
不同版本虚拟机显示大小以及是否带网络不太相同。
2、设置虚拟机网络,打通本机与虚拟机网络;
虚拟机网络设置多重方式,以下设置为本次使用的方法。
3、安装IIS并运行本环境需要的webservice;
IIS的安装参考其他网上文章
4、安装Microsoft Visual Studio 2008(高版本没找到嵌入式开发调试功能),设置外部调试程序;
选项——设备工具——设备——属性——配置——使用指定IP地址
5、运行扫码枪程序,在模拟器中验证调试自己开发的功能。
开发步骤
- oracle存储过程开发
确保单独调用存储过程测试没有问题 - webservice接口方法开发
通过网页直接调用新webservice方法确保新接口方法没有问题 - 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;
}
}