现在开发一个ERP系统需要和一个称重系统有接口,客户那边提供的称重系统是delphi开发的。提供的资料如下1.将cKmtMeter.dll,Meter.dll,pComm.dll,Zhuanhuan.Txt,unit.txt放到程序目录下。
2.uses ComObj;
3.包含头文件cKmtMeter_TLB.pas
//////////////////////////////////////////////////////////////////////////////////
//定义仪表对象
COMSvr_Meter : IcomMeter;
//创建仪表对象
COMSvr_Meter := CreateComObject(CLASS_comMeter) as IcomMeter;
//初始化仪表参数
COMSvr_Meter.Init('A');
//连接仪表
COMSvr_Meter.Open();
//仪表设置
COMSvr_Meter.Setup();
//使用完关闭
COMSvr_Meter.Close();
COMSvr_Meter:=nil;/////////////////////////////////////////////////通讯////////////////////////////
procedure TForm1.Timer1Timer(Sender: TObject);
var
iStat:Integer;
sWgt:String;
begin
if COMSvr_Meter<>nil then
Begin
iStat:=-1;
COMSvr_Meter.GetMeterData(iStat,sWgt);
if iStat<>-1 then
panLed.Caption:=sWgt;
end;
end;
//////////////////////////////////////////////////////////////////////////////////COMSvr_Meter.GetStopStat(); //是否稳定
COMSvr_Meter.GetConnStat(); //是否通讯
COMSvr_Meter.GetUnit() //取计量单位
COMSvr_Meter.GetScaleName() //取秤名
COMSvr_Meter.GetDotFormat(); //取小数格式
我在vs项目中将所有的dll放到bin目录下
然后 [DllImport("cKmtMeter.dll")]
protected static extern void GetStopStat(); [DllImport("Meter.dll")]
protected static extern void GetConnStat(); [DllImport("Pcomm.dll")]
protected static extern void GetUnit();
在一个方法中
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "getRow")
{
Response.Write("当前行号为:" + e.CommandArgument);
int index = Convert.ToInt32(e.CommandArgument);
int number = index - 1;
((TextBox)GridView1.Rows[number].FindControl("beizhu")).Text="1";
//定义仪表对象;
IcomMeter COMSvr_Meter = new IcomMeter();
//初始化仪表参数
COMSvr_Meter.Init('A');
//连接仪表
COMSvr_Meter.Open();
//仪表是否稳定
COMSvr_Meter.GetStopStat();
//仪表是否通讯
COMSvr_Meter.GetConnStat();
//取计量单位
COMSvr_Meter.GetUnit();
//取称名
COMSvr_Meter.GetScaleName();
//取小数格式
COMSvr_Meter.GetDotFormat();
//仪表关闭
COMSvr_Meter.Close();
COMSvr_Meter =nil;
} }老是提示 IcomMeter COMSvr_Meter = new IcomMeter();对象声明的不对,各位谁做过这方面的,帮着解释解释吧,多谢了
2.uses ComObj;
3.包含头文件cKmtMeter_TLB.pas
//////////////////////////////////////////////////////////////////////////////////
//定义仪表对象
COMSvr_Meter : IcomMeter;
//创建仪表对象
COMSvr_Meter := CreateComObject(CLASS_comMeter) as IcomMeter;
//初始化仪表参数
COMSvr_Meter.Init('A');
//连接仪表
COMSvr_Meter.Open();
//仪表设置
COMSvr_Meter.Setup();
//使用完关闭
COMSvr_Meter.Close();
COMSvr_Meter:=nil;/////////////////////////////////////////////////通讯////////////////////////////
procedure TForm1.Timer1Timer(Sender: TObject);
var
iStat:Integer;
sWgt:String;
begin
if COMSvr_Meter<>nil then
Begin
iStat:=-1;
COMSvr_Meter.GetMeterData(iStat,sWgt);
if iStat<>-1 then
panLed.Caption:=sWgt;
end;
end;
//////////////////////////////////////////////////////////////////////////////////COMSvr_Meter.GetStopStat(); //是否稳定
COMSvr_Meter.GetConnStat(); //是否通讯
COMSvr_Meter.GetUnit() //取计量单位
COMSvr_Meter.GetScaleName() //取秤名
COMSvr_Meter.GetDotFormat(); //取小数格式
我在vs项目中将所有的dll放到bin目录下
然后 [DllImport("cKmtMeter.dll")]
protected static extern void GetStopStat(); [DllImport("Meter.dll")]
protected static extern void GetConnStat(); [DllImport("Pcomm.dll")]
protected static extern void GetUnit();
在一个方法中
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "getRow")
{
Response.Write("当前行号为:" + e.CommandArgument);
int index = Convert.ToInt32(e.CommandArgument);
int number = index - 1;
((TextBox)GridView1.Rows[number].FindControl("beizhu")).Text="1";
//定义仪表对象;
IcomMeter COMSvr_Meter = new IcomMeter();
//初始化仪表参数
COMSvr_Meter.Init('A');
//连接仪表
COMSvr_Meter.Open();
//仪表是否稳定
COMSvr_Meter.GetStopStat();
//仪表是否通讯
COMSvr_Meter.GetConnStat();
//取计量单位
COMSvr_Meter.GetUnit();
//取称名
COMSvr_Meter.GetScaleName();
//取小数格式
COMSvr_Meter.GetDotFormat();
//仪表关闭
COMSvr_Meter.Close();
COMSvr_Meter =nil;
} }老是提示 IcomMeter COMSvr_Meter = new IcomMeter();对象声明的不对,各位谁做过这方面的,帮着解释解释吧,多谢了
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货