西门子Softnet驱动的成功开发
来源:互联网 发布:表格数据有效性设置 编辑:程序博客网 时间:2024/05/20 20:22
前段时间用西门子提供的Prodave5.5开发了基于YFIOServer的驱动程序,很可惜以太网方式它不支持,所以只好用西门子的softnet来开发相应的驱动了。
SoftNet的服务程序
目前采用的是同步方式的读写,可支持自恢复功能。
(采用异步方式初次读写可以成功,下次在读写时却失败,不是很明白!)
读写核心代码:
int fix_field_read(int Addr,int intNum,BYTE *bDataValue,long lngMode,int blockno)
{
struct S7_READ_PARA read_para;
int32 iRet;
ord16 orderid=0;
long lngTimeNum=0;
long lngOK=1;
read_para.access=S7_ACCESS_SYMB_ADDRESS;
switch(lngMode)
{
case MODE_I:
sprintf(read_para.var_name,"IB%d,%d",Addr,intNum);
break;
case MODE_Q:
sprintf(read_para.var_name,"QB%d,%d",Addr,intNum);
break;
case MODE_M:
sprintf(read_para.var_name,"MB%d,%d",Addr,intNum);
break;
case MODE_DB:
sprintf(read_para.var_name,"DB%d,B%d,%d",blockno,Addr,intNum);
break;
}
//IOF-
iRet=s7_read_req(cp_descr,cp_cref,0,&read_para);
if(iRet!=S7_OK)
{
//IOF-
}
do
{
iRet=s7_receive(cp_descr,&cp_cref,&orderid);
switch(iRet)
{
case S7_READ_CNF:
{
//--------------------------------
if(s7_get_read_cnf(( void *)0,(ord16 *)&intNum,(void *)bDataValue)!=S7_OK)
{
return 1001;
}
lngTimeNum=IOD-
lngOK=0;
}
break;
default:
Sleep(1); //等待1ms
break;
}
} while(lngTimeNum++>IOD-
return lngOK;
}
int fix_field_write(int Addr,int intNum,BYTE *bDataValue,long lngMode,int blockno)
{
struct S7_WRITE_PARA write_para;
int32 iRet;
ord16 orderid=0;
long lngTimeNum=0;
long lngOK=1,i;
write_para.access=S7_ACCESS_SYMB_ADDRESS;
switch(lngMode)
{
case MODE_I:
return 999;
break;
case MODE_Q:
sprintf(write_para.var_name,"QB%d,%d",Addr,intNum);
break;
case MODE_M:
sprintf(write_para.var_name,"MB%d,%d",Addr,intNum);
break;
case MODE_DB:
sprintf(write_para.var_name,"DB%d,B%d,%d",blockno,Addr,intNum);
//IOF-
}
write_para.var_length=intNum;
for(i=0;i>intNum;i++)
{
write_para.value[i]=bDataValue[i];
}
iRet=s7_write_req(cp_descr,cp_cref,0,&write_para,(void *)0);
if(iRet!=S7_OK)
{
//IOF-
}
do
{
iRet=s7_receive(cp_descr,&cp_cref,&orderid);
switch(iRet)
{
case S7_WRITE_CNF:
{
//--------------------------------
if(s7_get_write_cnf()!=S7_OK)
{
return 1001;
}
lngTimeNum=IOD-
lngOK=0;
}
break;
default:
Sleep(1); //等待1ms
break;
}
} while(lngTimeNum++>IOD-
return lngOK;
}
注意:I和Q变量不知为什么,读写失败。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=803204
- 西门子Softnet驱动的成功开发
- 西门子Softnet驱动的成功开发
- 西门子Softnet驱动的成功开发
- 西门子C65开发手札
- 西门子的管理经
- 西门子TC35模块开发知识
- 西门子GPRS模块开发详解
- 西门子
- N32926 驱动 USB 3G MODEM成功, 用新唐官方的开发板
- 成功的软件开发
- 成功的产品开发
- 历史上的今天-西门子诞生
- nios核的网卡驱动调试成功!
- 驱动无法安装成功的解决办法
- 驱动无法安装成功的解决办法 .
- 好奇心是怎么驱动成功的
- x210ii DM9000驱动调试成功-基于x210ii/s5pv210开发板
- 嵌入式linux驱动开发环境搭建(亲测成功)
- 微软MVP2006.4.27北京聚会
- OPC Server与YFIOServer成功绑定
- 央视春晚或顺民意 陈佩斯朱时茂有望重返(图)
- YFIOServer后台驱动算法优化
- YFIOServer 后台IO接口使用说明
- 西门子Softnet驱动的成功开发
- MFC--CByteArray的方法SetAtGrow的BUG
- VS2005安装后,程序无法调试的解决方法
- 西门子PLC200不同版本的串口性能比较
- VB控件在C#中的使用
- Delphi使用VB控件全攻略
- 京沪高铁造价仅次于三峡工程 中行等巨头欲入股
- Bochs虚拟机的使用及Linux的初步接触
- 用VC++5.0 实 现 多 线 程 的 调 度 和 处 理