西门子Softnet驱动的成功开发

原创 2006年06月16日 11:42:00

前段时间用西门子提供的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->ShowMessage(1,1,read_para.var_name,"--");
         
 iRet=s7_read_req(cp_descr,cp_cref,0,&read_para);
    if(iRet!=S7_OK)
 {
  //IOF->ShowMessage(1,1,read_para.var_name,"s7_read_req");
        return 1000;
 }   
 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->Overtime+1;
     //----------------------------------
     lngOK=0;
    }
       break;
   default:
    Sleep(1);   //等待1ms
    break;
  }
   
 } while(lngTimeNum++<IOD->Overtime && iRet!=S7_ABORT_IND);
   
 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->ShowMessage(1,1,write_para.var_name,"fix_field_write");
  break;
 }
    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->ShowMessage(1,1,"Error:s7_write_req","fix_field_write");
        return 1000;
 }   
 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->Overtime+1;
     //----------------------------------
     lngOK=0;
    }
       break;
   default:
    Sleep(1);   //等待1ms
    break;
  }
   
 } while(lngTimeNum++<IOD->Overtime && iRet!=S7_ABORT_IND);
   
 return lngOK;
}

注意:I和Q变量不知为什么,读写失败。

同三维4路采集卡开发包中DLL使用

同三维T550E提供完整的二次开发包SDK,其中DSStream.DLL 使用说明 (for VC++ 6.0)   操作系统:Windows   一、 编译环境:   1、 将SDK安装目录下...
  • Andy20081251
  • Andy20081251
  • 2014年03月11日 16:43
  • 886

业内性能最高、最稳定的Json SDK开发包

1   概述 本文档适用于C语言开发人员,文档详细讲述Json解析器SDK中每个函数的 用法以及源码示例。   2    Json介绍 参考相关文档。   3    Json 解析器S...
  • freeland008
  • freeland008
  • 2017年05月04日 18:06
  • 203

IOS应用内购买(IAP)开发时遇到的几个问题总结

IOS IAP开发 具体的开发流程可以参考一下几篇文章: http://blog.devtang.com/blog/2012/12/09/in-app-purchase-check-list/ htt...
  • shinancao666
  • shinancao666
  • 2013年10月12日 15:53
  • 2007

WinpCap抓包 公开的免费的抓包驱动加开发包

WinpCap是一个公开的免费的抓包驱动加开发包,利用它,可以大大缩短我们的开发周期。 首先,先枚举系统中的所有网卡: /* 获取设备列表 */ if (pcap_findalldevs(&a...
  • gorunbu
  • gorunbu
  • 2015年06月12日 18:01
  • 462

OCR开发包--你的误解有多深

关键词:OCR开发包 OCR OCR SDK   关于OCR开发包很多人有几大误解,下面我做一下总结和梳理:   误解 一:开源的就是好用的   很多做图像识别的人士希望找到开源的O...
  • curry666
  • curry666
  • 2016年08月02日 16:09
  • 1836

Linux 内核开发

Linux 内核开发 简介 如你所知,我从去年开始写了一系列关于 x86_64 架构汇编语言程序设计的博文。除了大学期间写过一些 Hello World 这样无实用价值的程序之外,我从来没写过哪...
  • fouweng
  • fouweng
  • 2017年02月08日 14:20
  • 646

从零开始学习Windows WDF驱动程序开发

从零开始学习Windows WDF驱动程序开发 ▼ 目录: 1. 第一部分 编译安装测试一个简单的WDF驱动程序    1.1 编译安装测试    1.2 Windo...
  • chenchong_219
  • chenchong_219
  • 2014年03月20日 23:09
  • 13037

python包开发学习

最近经常写python脚本,感觉东西多了需要把代码分割开来,方便后期维护.因此学习了下python的包相关知识. 1.简单入门python包与普通文件夹的区别是多了一个init.py文件.如就是最简单...
  • taishanduba
  • taishanduba
  • 2017年03月18日 18:41
  • 809

Ubuntu 14.04上驱动开发环境配置,及最简单一个驱动编写。

开发ubuntu 14.04 本机使用的驱动程序。 安装开发工具: * apt-get install build-essential 建2个文件: 最简单的驱动代码 Hello.c /*0 ...
  • bugonline
  • bugonline
  • 2015年05月18日 15:01
  • 2463

海康摄像头+web调用(官方开发包)+手把手全方位扫盲

海康摄像头+web调用(官方开发包)+手把手全方位扫盲最近公司的音视频项目需要做一个网络摄像头模块,甲方正在使用的是海康摄像头,通过NVR管理。要求我们在web端实现一些功能: 实时查看 视频截图 视...
  • xu_san_duo
  • xu_san_duo
  • 2017年02月14日 17:38
  • 14609
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:西门子Softnet驱动的成功开发
举报原因:
原因补充:

(最多只允许输入30个字)