?? bspdotprnt.c
字號:
ucDealData[ucByteCount -1 - k] |= ((ucaData[k] & 0x01)<<7)|((ucaData[k] & 0x02)<<5)|((ucaData[k] & 0x04)<<3)|((ucaData[k] & 0x08)<<1);
ucDealData[ucByteCount -1 - k] |= ((ucaData[k] & 0x10)>>1)|((ucaData[k] & 0x20)>>3)|((ucaData[k] & 0x40)>>5)|((ucaData[k] & 0x80)>>7);
}
for ( j = 1; j < ucByteCount; j ++ )
{
ucDealData[j] = (( ucDealData[j])|(ucDealData[j - 1])) - (ucDealData[j - 1]);
}
for (j = 0; j < ucByteCount; j ++)
{
if (!s_ucPrntDoubleHigh)
{
g_ucprntPattern1 [PRNT_WIDTH - s_usprntPatternCount] = ucDealData[j];
s_usprntPatternCount ++;
if (s_ucPrntDoubleWidth) /* 倍寬打印*/
{
g_ucprntPattern1 [PRNT_WIDTH - s_usprntPatternCount] = 0;
s_usprntPatternCount ++;
}
}
else /* 倍高打印 */
{
s_ucRequestDoubleHigh = 1;
g_ucprntPattern1[PRNT_WIDTH - s_usprntPatternCount] = bspDotByteToWord(ucDealData[j]&0x0f);
g_ucprntPattern3[PRNT_WIDTH - s_usprntPatternCount] = bspDotByteToWord(ucDealData[j]>>4);
s_usprntPatternCount ++;
if (s_ucPrntDoubleWidth) /* 倍寬打印*/
{
g_ucprntPattern1 [PRNT_WIDTH - s_usprntPatternCount] = 0;
g_ucprntPattern3 [PRNT_WIDTH - s_usprntPatternCount] = 0;
s_usprntPatternCount ++;
}
}
}
if (s_ucPrntDoubleWidth) /* 倍寬打印 */
{
usTempWidth = s_usprntPatternCount;
s_usprntPatternCount -= 2;
for (j = 0; j < (ucByteCount - 1); j++)
{
g_ucprntPattern1[PRNT_WIDTH - s_usprntPatternCount] = g_ucprntPattern1[PRNT_WIDTH - s_usprntPatternCount]
|g_ucprntPattern1[PRNT_WIDTH - (s_usprntPatternCount - 2)];
g_ucprntPattern3[PRNT_WIDTH - s_usprntPatternCount] = g_ucprntPattern3[PRNT_WIDTH - s_usprntPatternCount]
|g_ucprntPattern3[PRNT_WIDTH - (s_usprntPatternCount - 2)];
s_usprntPatternCount -= 2;
}
s_usprntPatternCount = usTempWidth;
}
}
return SUCCESS;
}
/*
*****************************************************
*
* 函數名:bspDotChineseDealPattern
*
* 功 能:穿孔打印機漢字字模處理函數
*
* 輸 入:s_ucPrntDoubleHigh
* s_ucprntCharSpace
* s_ucPrntDoubleWidth
*
* 輸 出:g_ucprntPattern1
* g_ucprntPattern2
* g_ucprntPattern3
* s_usprntPatternCount
*
* 返 回:SUCCESS
*
******************************************************
*/
UINT1 bspDotChineseDealPattern
(
UINT4 _offset /* 開始取字模的地址 */
)
{
UINT1 j, k, l,m,n;
UINT1 ucDealData[32] = {0};
UINT1 ucDealData1[32] = {0};
mem_set(ucDealData,0,sizeof(ucDealData));
mem_set(ucDealData1,0,sizeof(ucDealData1));
mem_cpy(ucDealData, (UINT1 *)_offset, 32);
if (s_ucPrntDoubleHigh) /* 倍高 */
{
s_ucRequestDoubleHigh = 1;
for (l = 0; l < 8; l ++)
{
for (j = 0; j < 8; j ++)
{
for (n = 0; n < 4; n ++)
{
bspDotprntBitWrite(ucDealData1 + 8*n + l, 7 - j, bspDotprntBitRead(ucDealData[2 * j + 16*(n/2) + n%2],(7 - l)));
}
}
}
if (!s_ucPrntDoubleWidth)/* 不是倍寬 */
{
/* 不能連續出針,進行半點處理 */
for (m = 1; m < 16; m ++)
{
ucDealData1[m] &= ~(ucDealData1[m] & ucDealData1[m - 1]);
ucDealData1[16 + m] &= ~(ucDealData1[16 + m] & ucDealData1[16 + m - 1]);
}
}
for (m = 0; m < 16; m++ )
{
g_ucprntPattern3[s_usprntPatternCount] = ucDealData1[m];
g_ucprntPattern1[s_usprntPatternCount] = ucDealData1[16 + m];
s_usprntPatternCount ++;
if (s_ucPrntDoubleWidth)
{
s_usprntPatternCount ++;
}
}
}
else /* 非倍高 */
{
/* 根據字模重新取位構成漢字打印字模,其中i 表示字節 j表示對應的位 */
for (l = 0; l < 8; l ++)
{
for (j = 0; j < 8; j ++)
{
/* 漢字字模處理,處理后的字模前16字節為正向出針字模,后16字節為反向出針字模 */
for (n = 0; n < 4; n ++)
{
bspDotprntBitWrite(ucDealData1 + 8*n + l, 7 - j, bspDotprntBitRead(ucDealData[4 * j + n],(7 - l)));
}
}
}
if (s_ucPrntDoubleWidth)
{
for (k = 0; k < 16; k ++)
{
g_ucprntPattern1[s_usprntPatternCount] = ucDealData1[k];
g_ucprntPattern2[s_usprntPatternCount] = ucDealData1[k + 16];
s_usprntPatternCount ++;
s_usprntPatternCount ++;
}
}
else
{
/* 不能連續出針,進行半點處理 */
for (m = 1; m < 16; m ++)
{
ucDealData1[m] &= ~(ucDealData1[m] & ucDealData1[m - 1]);
ucDealData1[16 + m] &= ~(ucDealData1[16 + m] & ucDealData1[16 + m - 1]);
}
for (k = 0; k < 16; k ++)
{
g_ucprntPattern1[s_usprntPatternCount] = ucDealData1[k];
g_ucprntPattern2[s_usprntPatternCount] = ucDealData1[k + 16];
s_usprntPatternCount ++;
}
}
}
return SUCCESS;
}
/*
******************************************************
*
* 函數名:bspDotByteToWord
*
* 功 能:對單字節字模數據拉長處理(0 1 1 0 -> 00 11 11 00)
*
* 輸 入:無
*
* 輸 出:無
*
* 返 回:N/A
*
******************************************************
*/
UINT1 bspDotByteToWord(UINT1 _ucByte)
{
switch (_ucByte)
{
case 0:
return 0x00;
case 1:
return 0x03;
case 2:
return 0x0c;
case 3:
return 0x0f;
case 4:
return 0x30;
case 5:
return 0x33;
case 6:
return 0x3c;
case 7:
return 0x3f;
case 8:
return 0xc0;
case 9:
return 0xc3;
case 10:
return 0xcc;
case 11:
return 0xcf;
case 12:
return 0xf0;
case 13:
return 0xf3;
case 14:
return 0xfc;
case 15:
return 0xff;
default:
return 0;
}
}
/*
******************************************************
*
* 函數名:bspDotprntBitRead
*
* 功 能:讀取字節某一位
*
* 輸 入:無
*
* 輸 出:無
*
* 返 回:N/A
*
******************************************************
*/
UINT1 bspDotprntBitRead
(
UINT1 _ucData, /* 讀取字節數據 */
UINT1 _ucBit /* 處理字節某一位 */
)
{
return ((_ucData >> _ucBit) & 0x01);
}
/*
***************************************************
*
* 函數名:bspDotprntBitWrite
*
* 功 能:寫字節數據的某一位
*
* 輸 入:無
*
* 輸 出:無
*
* 返 回:N/A
*
****************************************************
*/
void bspDotprntBitWrite
(
UINT1 *_ucData, /* [out]寫字節數據 */
UINT1 _ucBit, /*第幾位*/
UINT1 _ucBitValue /*位值*/
)
{
if (_ucBitValue == 0)
{
*_ucData &= (~(0x01 << _ucBit));
}
else if (_ucBitValue == 1)
{
*_ucData |= (0x01 << _ucBit);
}
return;
}
/*
***************************************************
*
* 函數名:bspDotPrntBitMap
*
* 功 能:穿孔打印填充位圖打印數據
*
* 輸 入:無
*
* 輸 出:無
*
* 返 回:N/A
*
****************************************************
*/
INT1 bspDotPrntBitMap
(
UINT1* _pBuffer, /* [in]存放位圖數據緩存首地址 */
UINT2 _usLength /* 打印位圖數據長度 */
)
{
UINT2 i;
if (_usLength == 0)
{
return FAULT;
}
for (i = 0; i < _usLength; i ++)
{
s_usprntPatternCount ++;
g_ucprntPattern1[s_usprntPatternCount] = _pBuffer[i];
s_usprntPatternCount ++;
if (s_usprntPatternCount >= (PRNT_WIDTH - 2*g_ucPrntWidthAdjust))
{
break;
}
}
return SUCCESS;
}
/*
**************************************************
*
* 函數名:bspDotPrntCheckHP
*
* 功 能:穿孔打印機檢測HP開關觸發信號
*
* 輸 入:無
*
* 輸 出:無
*
* 返 回:0-----未檢測到HP位置
* 1-----檢測到HP位置
*
**************************************************
*/
INT1 bspDotPrntCheckHP(void)
{
if (HOME_SENSOR)
{
return 0;/* 未找到HP */
}
else
{
return 1;/*找到HP HOME_SENSOR */
}
}
/*
**************************************************
*
* 函數名:bspDotPrntCheckHP
*
* 功 能:穿孔打印機檢測紙狀態觸發信號
*
* 輸 入:無
*
* 輸 出:g_ucprinterState
*
* 返 回:0------檢測到有紙
* 1------檢測到無紙
****************************************************
*/
INT1 bspDotPrntCheckPE(void)
{
if (PE_SENSOR)
{
g_ucprntState = g_ucprntState&0xfe;
return 0; /*有紙 */
}
else
{
g_ucprntState = g_ucprntState|NOPAPER;
return 1;/* 無紙 */
}
}
/*
**************************************************
*
* 函數名:bspDotPrntCRStop
*
* 功 能:穿孔打印機CR電機停機
*
* 輸 入:無
*
* 輸 出:無
*
* 返 回:N/A
*
**************************************************
*/
void bspDotPrntCRStop(void)
{
/* 設置電流為33%,關閉基準電流 */
bspDotPrntSetCurrentLevel(ZERO_CURRENT);
return;
}
/*
**************************************************
*
* 函數名:bspDotPrntPFStop
*
* 功 能:穿孔打印機進紙電機停機
*
* 輸 入:無
*
* 輸 出:無
*
* 返 回:N/A
*
**************************************************
*/
void bspDotPrntPFStop(void)
{
/* 關進紙電機5v電源 */
LF_STEP_SIGNAL_OFF();
return;
}
/*
**************************************************
*
* 函數名:bspDotPrntSetCurrentLevel
*
* 功 能:穿孔打印機CR電機和進紙電機電流等級選擇
*
* 輸 入:無
*
* 輸 出:無
*
* 返 回:N/A
*
****************************************************
*/
void bspDotPrntSetCurrentLevel
(
UINT1 _ucCurrentLevel /* 驅動電流等級 */
)
{
switch (_ucCurrentLevel)
{
case ZERO_CURRENT: /*電流為0% */
CRI11_I121();
CRI01_I011();
break;
case LOW_CURRENT: /*電流為33% */
CRI11_I120();
CRI01_I011();
break;
case MIDDLE_CURRENT:/*電流為66% */
CRI11_I121();
CRI01_I010();
break;
case HIGH_CURRENT: /*電流為100% */
CRI11_I120();
CRI01_I010();
break;
default:
return;
break;
}
}
/*
**************************************************
*
* 函數名:bspDotPrntPowerOn
*
* 功 能:穿孔打印機上電
*
* 輸 入:無
*
* 輸 出:無
*
* 返 回:N/A
*
**************************************************
*/
void bspDotPrntPowerOn(void)
{
/* 開機芯24v電源 */
PRTPWR_CON_ON();
return;
}
/*
**************************************************
*
* 函數名:bspDotPrntPowerOff
*
* 功 能:穿孔打印機下電
*
* 輸 入:無
*
* 輸 出:無
*
* 返 回:N/A
*
**************************************************
*/
void bspDotPrntPowerOff(void)
{
/* 關進紙電機5v電源 */
LF_STEP_SIGNAL_OFF();
/* 關機芯24v電源 */
PRTPWR_CON_OFF();
return;
}
/*
**************************************************
*
* 函數名:bspPrntPutDataToBuff
*
* 功 能:傳送打印數據到緩沖區
*
* 輸 入:無
*
* 輸 出:s_ucprntBuffDataIn
* s_ucprntDataBuffer
*
* 返 回:SUCCESS-----處理成功
* FAULT-------數據越界(數據長度不超過80個)
*
****************************************************
*/
INT1 bspDotprntPutDataToBuff
(
UINT1 * _pAdrress, /* [in]數據起始地址 */
UINT1 _Lenth /* 數據長度 */
)
{
if ( _Lenth > 80)
{
return FAULT;
}
if ((s_ucprntBuffDataIn + _Lenth) > sizeof(s_ucprntDataBuffer))
{
s_ucDataBufferFull = 1;
bspDotprntAndNewline(1, 24);
}
mem_cpy(s_ucprntDataBuffer + s_ucprntBuffDataIn, _pAdrress, _Lenth);
s_ucprntBuffDataIn += _Lenth;
return SUCCESS;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -