1、终端向ESAM发送字节函数。
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
函数名称:EsamSendChar
函数功能:向Esam发送单字节
门户参数:cSendChar,要发送的字节
出口参数:无
说明:10位传输,第一个开始位(总是很低),第十个位是检查位。
最多三次,
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void esamsendchar(unsigned char csendchar)
{
Unsigned int iTempTran、iErrCoun
Unsigned int iTemp=cSendChar
ITemp=iTemp1
ITemp=ITemp(~ bit 0);
cardworkflag=~(IC xor mxor)cardworkflag;
PORCHECKBIT(CSENDCHAR);
if(cardworkflag 0 x 80)itemp=itemp |位9;
else iTemp=iTemp(~ bit 9);
EsamSDAOutput
for(ierr coun=0;IErrCoun3IErrCoun)
{
for(iTempTran=0;ITempTran10ITempTran)
{
If(iTemp0x01)
{
EsamSDAOutputHigh
}
Else
{
EsamSDAOutputLow
}
ITemp=iTemp0x01
delay 1 etu();
}
EsamSDAInput
delay 05 xe tu();
//OK发送
If(EsamSDAInputCheck)
{
delay 1 etu();
delay 05 xe tu();
Goto EsamSendCharOk
}
//传输错误
Else
{
CardError=ErrorRWBIT | CardError
delay 1 etu();
EsamSDAOutput
delay 1 etu();
}
}
EsamSendCharOk:
}
2、终端向CPU卡发送字节函数。
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
函数名称:CardSendChar
函数功能:向CPU卡发送1字节
门户参数:cSendChar,要发送的字节
出口参数:无
说明:10位传输,第一个开始位(总是很低),第十个位是检查位。
最多三次,
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void cardsendchar(unsigned char csendchar)
{
Unsigned int iTempTran、iErrCoun
Unsigned int iTemp=cSendChar
ITemp=iTemp1
ITemp=ITemp(~ bit 0);
//清除检查位并计算检查位
cardworkflag=~(IC xor mxor)cardworkflag;
PORCHECKBIT(CSENDCHAR);
if(cardworkflag 0 x 80)itemp=itemp |位9;
else iTemp=iTemp(~ bit 9);
//开始数据传输
CardSDAOutput
for(ierr coun=0;IErrCoun3IErrCoun)
{
//1字节传输,8位
for(iTempTran=0;ITempTran10ITempTran)
{
If(iTemp0x01)
{
CardSDAOutputHigh
}
Else
{
CardSDAOutputLow
}
ITemp=iTemp0x01
delay 1 etu();
}
CardSDAInput
delay 05 xe tu();
//OK发送
If(CardSDAInputCheck)
{
delay 1 etu();
delay 05 xe tu();
Goto SendCharOk
}
//传输错误
Else
{
CardError=ErrorRWBIT | CardError
delay 1 etu();
CardSDAOutput
delay 1 etu();
}
}
SendCharOk:
}
3、要发送的字节奇偶生成函数
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
函数名称:PorCheckBit
函数功能:计算要发送的字符的偶数确认
输入参数:cSendChar,要传输的文字
输出参数:无
说明:创建奇偶位
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
VOID PORCHECKBIT(UNSIGNED CHAR CSENDCHAR)
{
unsigned char sendcommandbufbit=csendchar;
Int itemp
for(itemp=0;Itemp8Itemp)
{
If(SendCommandBufBit0x01)
{
CardWorkFlag=CardWorkFlag0x80
}
sendcommandbufbit=sendcommandbufbit 0 x 01;
}
}
1.《【出口参数】CPU卡程序设计实例(七)数据发送及校验》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《【出口参数】CPU卡程序设计实例(七)数据发送及校验》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/auto/2611909.html