/*
poscomm.c
Sunyard S520-G POS communicate routine package.
*/
#include <stdio.h>
#include <stdlib.h>
#include "pos.h"
#include "SunDisplay.h"
#include "syd520.h"
static int CommTrans(int i );
static void DoRever(int i);
static int SendData(char *strBuf, short sDataSize );
static int RecvData(char *strBuf, short sBufSize, short sTimeOut );
//static void PrintPack( char *title, unsigned char *pack, int len );
extern int DoPrint(int i);
int DES3(unsigned char *strBuf,unsigned char *key1,unsigned char *key2,int y);
// *******************************************************************
// Function Name : ConnectHost
// Function : connect the pos with host
// Parameter :
// Return : on success return > 0;
// *******************************************************************
short DoConnectHost()
{
short sRet;
char strHost[20], strTcpPort[10], strTel[20];
// 连接
Syd_DisplayLine( 3, "Connecting host...", 0, ALIGN_CENTER );
memcpy(Conn->E_IN,Req->E_IN,6);
memcpy(BUFFER,Conn,48);
Syd_FieldVar(BUFFER, HDT_TEL, HDT_FS, strTel);
Syd_FieldVar(BUFFER, HDT_TCP, HDT_FS, strHost);
Syd_FieldVar(BUFFER, HDT_PORT, HDT_FS, strTcpPort);
sRet = Syd_ConnectHost(ngCommWay, strHost, atoi(strTcpPort), strTel);
if ( sRet < 0 )
return RET_FAILURE;
return RET_SUCCESS;
}
/*
* CommHost() -- commnuciate with host
* in para --
* out para --
* return --
* RET_SUCCESS: SUCCESS
* other: FAILURE
*/
int CommHost( )
{
time_t tStart;
short sRet, sOfflineMode;
char temp[ 30 ];
int nRet;
int nkey;
// connect
tStart = time( NULL );
// Syd_DisplayLine( 3, "connecting host ...", 0, ALIGN_CENTER );
sRet = DoConnectHost();
if ( sRet < 0 )
{
Syd_ErrorMessageWait( 3, "connect failure", 0, ALIGN_CENTER );
return RET_FAILURE;
}
sRet = CommTrans(1);
A: if (sRet ==0)
{
////chenggong
Syd_ClearScreen();
Syd_DisplayLine( 2, " Do you want to print the result? ", 1, ALIGN_CENTER );
Syd_DisplayLine( 3, " 1. yes", 0, ALIGN_LEFT );
Syd_DisplayLine( 3, " 2. no", 0, ALIGN_LEFT );
while (1)
{
nkey = Sys_Key_WaitKey();
switch (nkey)
{
case KEY_1:
Syd_ClearScreen();
Syd_DisplayLine( 2, " please waiting for printing! ", 1, ALIGN_CENTER );
//////////////////////////////////////////////
nRet=DoPrintres();
if(nRet==0)
{
Syd_ClearScreen();
Syd_DisplayLine( 2, " printing successful! ", 1, ALIGN_CENTER );
}
else
{
Syd_ClearScreen();
Syd_DisplayLine( 2, " failing! ", 1, ALIGN_CENTER );
}
Syd_CloseComm(ngCommWay);
return RET_SUCCESS;
default:
break;
}
}
Syd_CloseComm(ngCommWay);
return RET_SUCCESS;
}
else if(sRet>0)
{
//shou dao cuowu xinxi
DoRever(4);
CommTrans(2);
goto A;
}
else if(sRet==-3)
{
DoRever(1);
CommTrans(2);
goto A;
}
else
{
Syd_ErrorMessageWait( 3, "Transaction Inprt", 0, ALIGN_CENTER );
Syd_CloseComm(ngCommWay);
return RET_FAILURE;
}
}
// *******************************************************************
// Function Name : CommTrans
// Function : send transaction data to the host and get response
// Parameter :
// sd : socket id
// Return : on success return RET_SUCCESS;
// *******************************************************************
static int CommTrans(int i)
{
short sTimeOut, sRet;
char temp[ 30 ];
int sRcvSize,sSndSize;
// pack data
Syd_DisplayLine( 3, "packing ...", 0, ALIGN_CENTER );
sSndSize = PackData( i );
if ( sSndSize <= 0 )
return RET_PACK_ERR;//-4
// timeout
Syd_FieldVar( BUFFER, HDT_TIMEOUT, HDT_FS, temp );
sTimeOut = atoi( temp );
// send
Syd_DisplayLine( 3, "Sending ...", 0, ALIGN_CENTER );
if ( SendData( BUFFER, sizeof( BUFFER ) ) < 0 )
{
return RET_SEND_ERR;//-8
}
// receive
Syd_DisplayLine(3, "Receiving ...", 0, ALIGN_CENTER);
if ( ( sRcvSize = RecvData( BUFFER, sizeof( BUFFER ), sTimeOut ) ) <= 0 ) {
if (sRcvSize == 0)
return RET_TIMEOUT;//-3
else
return RET_RECV_ERR;//-9
}
// unpack the data
Syd_DisplayLine( 3, "Processing ...", 0, ALIGN_CENTER );
sRet = UnPackData( BUFFER, sizeof( BUFFER ) );//////////////////////////////////////////////////////////////////////////
if ( sRet != RET_SUCCESS )
return sRet;
else
return RET_SUCCESS; //0
}
static int FormPacket( unsigned char *strData, int nLen )
{
int i;
strData[ 0 ] = STX;
strData[ 1 ] = ( int )( nLen / 1000 ) << 4 | ( int )( nLen % 1000 ) / 100;
strData[ 2 ] = ( int )( ( nLen % 100 ) / 10 ) <<4 | ( ( nLen % 100 ) % 10 );
strData[ 3 + nLen ] = ETX;
for ( strData[ 4 + nLen ] = 0, i = 1; i < 4 + nLen; i++)
strData[ 4 + nLen ] ^= strData[ i ];
return ( nLen + 5 );
}
// *******************************************************************
// Function Name : SendData
// Function : send data
// Parameter :
// strbuf:
// sDataSize:
// Return : on success return RET_SUCCESS;
// *******************************************************************
static int SendData( char *strBuf, short sDataSize )
{
char temp[ 20 ], *ptr;
short sRet;
unsigned char ucRef;
sRet = RET_SUCCESS;
switch ( ngCommWay )
{
case COMM_SMS:
if (sDataSize > 140) {
if (Syd_GetEnv("#SMREF", temp, 3) < 0) ucRef = 1;
else ucRef = atoi(temp);
sprintf(temp, "%03d", ucRef+1);
Syd_PutEnv("#SMREF", temp);
}
else ucRef = 0;
Syd_FieldVar( BUFFER, HDT_TEL, HDT_FS, temp);
sRet = Syd_SendSMSData( strBuf, sDataSize, temp, ucRef);
if ( sRet == 0 )
sRet = RET_SUCCESS;
else
sRet = RET_SEND_ERR;
break;
case COMM_DATA:
ptr = malloc( sDataSize + 5 );
if ( ptr == NULL )
return RET_FAILURE;
memcpy( ptr + 3, strBuf, sDataSize );
sDataSize = FormPacket( ptr, sDataSize );
sRet = Syd_SendCommData( ptr, sDataSize, 2 );
if ( sRet == 0 )
sRet = RET_SUCCESS;
else
sRet = RET_SEND_ERR;
free( ptr );
break;
case COMM_TCPIP:
case COMM_GPRS:
sRet = Syd_TcpPutMessage2(strBuf, sDataSize);
if ( sRet > 0 )
sRet = RET_SUCCESS;
else
sRet = RET_SEND_ERR;
break;
case COMM_SERIAL:
// sRet = SerialSendData( strBuf, sDataSize );
return RET_SEND_ERR;
break;
default:
return RET_SEND_ERR;
}
return sRet;
}
// *******************************************************************
// Function Name : RecvData
// Function : receive data
// Parameter :
// sd : socket id
// strbuf:
// sDataSize:
// sTimeOut:
// Return : on success return the received data number
// *******************************************************************
static int RecvData( char *strBuf, short sBufSize, short sTimeOut )
{
char temp[ 20 ], *ptr;
short sRet, i;
time_t tStart;
switch( ngCommWay )
{
case COMM_SMS: //sms
没有合适的资源?快使用搜索试试~ 我知道了~
dev_POS.rar_DEMO_POS linux_devpos_pos
共868个文件
h:824个
a:19个
c:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 132 浏览量
2022-09-19
16:06:03
上传
评论
收藏 2.85MB RAR 举报
温馨提示
pos demo application
资源详情
资源评论
资源推荐
收起资源包目录
dev_POS.rar_DEMO_POS linux_devpos_pos (868个子文件)
libc.a 14.41MB
libc.a 14.41MB
libthread_db.a 1.34MB
libm.a 925KB
libm.a 925KB
libpthread.a 865KB
libnet.a 390KB
syd520.a 363KB
libz.a 227KB
posapi.a 110KB
libutil.a 86KB
libutil.a 86KB
libcrypt.a 64KB
libcrypt.a 64KB
libcrypt_old.a 43KB
libresolv.a 3KB
libresolv.a 3KB
libnsl.a 3KB
libnsl.a 3KB
YTFProgram.cspy.bat 2KB
poscomm.c 14KB
posmain.c 12KB
postran.c 2KB
myprint.c 2KB
posfunc.c 2KB
pos.sys.cdma 270B
YTFProgram.dbgdt 63B
YTFProgram.dep 6KB
YTFProgram.dni 372B
YTFProgram.ewd 31KB
YTFProgram.ewp 44KB
ytfei.eww 164B
pos.sys.gprs 297B
elf.h 101KB
elf.h 101KB
string2.h 43KB
string2.h 43KB
unistd.h 36KB
malloc.h 35KB
stdlib.h 34KB
wchar.h 31KB
mathinline.h 24KB
pthread.h 24KB
obstack.h 22KB
string.h 22KB
stdio.h 22KB
regex.h 21KB
nameser.h 20KB
internals.h 19KB
netdb.h 19KB
confname.h 19KB
confname.h 19KB
sysnum.h 19KB
uClibc_stdio.h 19KB
uClibc_stdio.h 19KB
unistd.h 16KB
tgmath.h 16KB
langinfo.h 16KB
string.h 16KB
mathinline.h 16KB
mathinline.h 16KB
features.h 15KB
thread_db.h 15KB
thread_db.h 15KB
xdr.h 14KB
resolv.h 14KB
time.h 14KB
math.h 13KB
ctype.h 13KB
syd520.h 13KB
wctype.h 13KB
in.h 12KB
inttypes.h 12KB
signal.h 12KB
libc-lock.h 12KB
clnt.h 12KB
key_prot.h 11KB
mtio.h 11KB
useldt.h 11KB
uClibc_ctype.h 11KB
uClibc_ctype.h 11KB
socket.h 11KB
socket.h 11KB
socket.h 11KB
socket.h 11KB
socket.h 11KB
mathcalls.h 11KB
mathcalls.h 11KB
mathcalls.h 11KB
uClibc_locale.h 10KB
uClibc_locale.h 10KB
svc.h 10KB
telnet.h 10KB
ip_icmp.h 10KB
SunFlash.h 10KB
dirent.h 10KB
fenvinline.h 9KB
printf.h 9KB
siginfo.h 9KB
stdint.h 9KB
共 868 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
小波思基
- 粉丝: 74
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0