我现在要用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; 请前辈指点
有代码更好
基本思路如下:
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; 请前辈指点
有代码更好
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货