我现在要用DELPHI写一个守护进程,情况如下: 
基本思路如下: 
1、   供应商拿订单过来 2、   然后在电子秤上录入订单号,后台返回订单信息 3、   然后在电子秤上秤重收货 4、   然后向后台发送收货完毕的验收信息,后台打印出该验收单 5、   然后盖章并将验收单给供应商,结束。 
数据构结如下: 
订单数据结构 typedef struct 

   unsigned long   plu_nr;                 //PLU号 
   char           orderform_nr[10];   //订单号10   
   char           dummy[3];              //空 
   char           plu_name[28];     //品名 
   char           dummy1                //空 
   long int        price;     //单价  
   unsigned char   dummy2                //空 
   unsigned char   tare_nr;     //皮重号 
   unsigned int    dummy3                //空  
   long          fix_weight;              //固定重量 
   unsigned int    dummy4                //空 
   struct 
   { 
      unsigned    stueck : 1; //计数计重标志   1计数,0计重;By Count or By Wgt 
      unsigned    pr_ue_schr : 1; //是否允许变价   1:允许;0:不允许 Price Change Enable/Disable 
      unsigned    dummy: 1;             //空 
      unsigned    dummy : 1;            //空 
      unsigned    dummy : 1;            //空 
      unsigned    dummy : 1;            //空 
      unsigned    dummy : 1;            //空 
      unsigned    dummy : 1;            //空 
      unsigned    dummy : 2;            //空 
      unsigned    dummy : 2;            //空 
      unsigned    dummy : 1;            //空 
      unsigned    dummy: 3;            //空 
   } Flag;    unsigned int year;                  //年  如:2007      
   unsigned int month_day;            //月日     0718 
   unsigned int   hour_minute;        //小时分钟  1200 
    
long int       amount;                 //订货量       计重PLU为总重量,计数PLU为总数量 
long int       amount_upperlimi;        //接收上限     计重PLU为总重量,计数PLU为总数量(绝对值) 
long int       amount_lowerlimit;        //接收下限     计重PLU为总重量,计数PLU为总数量(绝对值) 
long int       price_upperlimit;      //变价上限  (绝对值) 
long int       price_lowerlimit;          //变价下限  (绝对值) long int       dummy;           
long int       dummy;                   
} plu_data_rec1a; 
流水数据结构 
typedef struct 

    unsigned long  plu_nr;                    // PLU号 
    char          orderform_nr [10];   //订单号 long int       price_ mdfy;        //修改后价格 
long int       amount_rcv;              //实际收货量   计重PLU为总重量,计数PLU为总数量 
} plu_trade_rec; typedef struct   

unsigned long flownr;                   //流水号 
plu_trade_rec  tradedata;                //单品交易信息 
}udp_ord_trade_rec; 
收货结束,定单关闭结束时对每一条单品交易只生成一条流水记录。交易中只能使用一种价格要么原价要么修改后的价格, 
不允许使用两种价格交易。  
<二 >通信协议 
PLU以TCP方式传送,秤内端口3001; 
交易记录以UDP方式上传,秤内端口4001,PC端口5001;应答协议如下: 
1、数据包结构图: 
  typedef struct 

unsigned char cSTART;         //包起始标志0x2 
unsigned short nTotalLength;  //totallength = sizeof(cmdheader) + pagenumber * pagelength 
unsigned short nPageNum;      //包的帧数    //sizeof(cmdheader) = 8 
unsigned short pagelength;      //每帧的大小 unsigned char  cmdrsp;        //命令和响应的标志CMD=0 RSP=1 
unsigned short command;       //命令号如:207 
unsigned short control;         //控制类型如:读取、写入、删除等 
unsigned short departno;        //部门号 总是为1 
unsigned char  deviceno;       //秤号总是为1 
}   command_header; Packet Head Structure 
//***********Packet Header Struct*********************************************** 
typedef struct 

unsigned char cSTART; //Packet statrt flag = 0x2 
unsigned short nTotalLength; //totallength = sizeof(cmdheader) + pagenumber * pagelength 
unsigned short nPageNum; //Frame 's Number in the Packet //sizeof(cmdheader) = 8 
unsigned short pagelength; //Frame 's Size 
unsigned char cmdrsp; //CMD and RSP Flag: CMD=0 RSP=1 
unsigned short command; //CMD NO. ,Example:PLU207,Extra Text 209,NF 880 
file:///D ¦/work/0StructureExplain.htm(第 1/4 页)2006-7-18 14:35:52 
PLU,ET and Label format Communication flow chart 
unsigned short control; //Access Type Flag: 
/* Access Type Meaning 
_ _ _ 0 write write to a record 
_ _ _ 1 delete delete a record 
_ _ _ 2 read equal read from the specified record 
_ _ _ 3 read greater or equal read from the specified record the next one 
_ _ _ 4 read less or equal read from the specified record the prev. one 
_ _ _ 5 read greater read the next record 
_ _ _ 6 read less read the previous record 
_ _ _ 7 read all read all records 
_ _ _ 8 delete all delete all records*/ 
unsigned short departno; //Depart NO,Always equal 1. 
unsigned char deviceno; //Scale NO.Always equal 1. 
} command_header; 请前辈指点 
有代码更好