資源描述:
《c語(yǔ)言串口通信范例.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、一個(gè)c語(yǔ)言的串口通信程序范例(2010-04-0215:19:47)轉(zhuǎn)載標(biāo)簽:c語(yǔ)言串口通信通信程序it分類:技術(shù)筆記最近接觸一個(gè)項(xiàng)目,用HL-C1C激光位移傳感器+易控組態(tài)軟件完成生產(chǎn)線高度跳變檢測(cè),好久沒(méi)有接觸cc#,一些資料,找來(lái)做個(gè)記錄,也許大家用的著#include#include#include#include#defineCOM232?0x2f8#defineCOMINT?0x0b#defineMaxBufLen?????500#definePort8259??
2、????0x20#defineEofInt???????0x20staticint?comportaddr;staticcharintvectnum;staticunsignedcharmaskb;staticunsignedcharBuffer[MaxBufLen];staticint?CharsInBuf,CircIn,CircOut;staticvoid(interruptfar*OldAsyncInt)();staticvoidinterruptfarAsyncInt(void);voidInit_COM(intComPortAddr,
3、unsignedcharIntVectNum,intBaud,??????unsignedcharData,unsignedcharStop,unsignedcharParity){?unsignedcharHigh,Low;?intf;?comportaddr=ComPortAddr;?intvectnum=IntVectNum;?CharsInBuf=0;CircIn=0;CircOut=0;??f=(Baud/100);?f=1152/f;High=f/256;?Low=f-High*256;?outp(ComPortAddr+3,0x8
4、0);?outp(ComPortAddr,Low);?outp(ComPortAddr+1,High);??Data=(Data-5)
5、((Stop-1)*4);?if(Parity==2)Data=Data
6、0x18;?elseif(Parity==1)Data=Data
7、0x8;?outp(ComPortAddr+3,Data);??outp(ComPortAddr+4,0x0a);??outp(ComPortAddr+1,0x01);??disable();?OldAsyncInt=getvect(IntVectNum);?setvect
8、(IntVectNum,AsyncInt);?enable();??maskb=inp(Port8259+1);?if(IntVectNum==0x0c)outp(Port8259+1,maskb&0xef);?elseoutp(Port8259+1,maskb&0xf7);??????????????}staticvoidinterruptfarAsyncInt(void){?disable();?if(CharsInBuf9、fLen-1)CircIn++;?elseCircIn=0;?if(CircIn==CircOut)CircOut++;?elseCharsInBuf++;?enable();?outp(Port8259,EofInt);}voidRestore(void){?setvect(intvectnum,OldAsyncInt);?outp(Port8259+1,maskb);?}intGetCharInBuf(unsignedchar*Char){?intFlag;?Flag=-1;?if(CharsInBuf>0)?{??(*Char)=Buff
10、er[CircOut];??if(CircOut11、1,0);?while(1)?{??if(kbhit())????{if((InChar=getch())==27)break;?????elsewh