⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iic.cpp

📁 一个串口通信的程序
💻 CPP
字号:
#include "stdafx.h"
#include "iic.h"
#include "datasvr.h"
#include <Nb30.h>

void MakeSMsg(SENDMSG &smsg,char msg_type[4])
{
	memset(&smsg,' ',512);
	memcpy(smsg.begin_code,"SSSS",4);
	memcpy(smsg.end_code,"ZZZZ",4);
	memcpy(smsg.msg_type,msg_type,4);
}

void MakeRMsg(RECHIEVEMSG &rmsg,char msg_type[4])
{
	memset(&rmsg,' ',512);
	memcpy(rmsg.begin_code,"RRRR",4);
	memcpy(rmsg.end_code,"ZZZZ",4);
	memcpy(rmsg.msg_type,msg_type,4);
	rmsg.msg_type[0]='R';
}

typedef struct _ASTAT_ {
    ADAPTER_STATUS adapt;                /* LAN adapter status      */
    NAME_BUFFER    NameBuff[30];         /* LAN adapter name buffer */
}ASTAT, *PASTAT;
bool get_lan_adpt_addr(UCHAR w_adpt_num,char * w_adpt_addr)
{
    /***** Static variables definition *****/
    NCB          w_ncb;            	/* Network control block      */
    UCHAR	 w_rtncd;          	/* Netbios return code        */
    ASTAT        w_adapter;        	/* LAN adapter information    */
    unsigned int i;                	/* Loop counter               */

    /***** Initialize Ncb *****/
    memset(&w_ncb, 0x00, sizeof(w_ncb));
            
    /***** Reset a LAN adapter *****/
    w_ncb.ncb_command  = NCBRESET;
    w_ncb.ncb_lana_num = w_adpt_num;
    
    w_rtncd = Netbios(&w_ncb);
    
//  printf("\nLAN adapter %d, The NCBRESET command return code is: 0x%x\n", 
//          w_adpt_num, w_rtncd);
            
    if ( 0 != w_rtncd ) {
    	return(false);
    }
    
    /***** Initialize Ncb *****/
    memset(&w_ncb, 0x00, sizeof(w_ncb));
        
    /***** Get LAN adapter physical address *****/
    w_ncb.ncb_command  = NCBASTAT;
    w_ncb.ncb_buffer   = (UCHAR*) &w_adapter;
    w_ncb.ncb_length   = sizeof(w_adapter);
    w_ncb.ncb_lana_num = w_adpt_num;
    strcpy((char*) &w_ncb.ncb_callname, "*");
	
    w_rtncd = Netbios(&w_ncb);
    if ( 0 != w_rtncd ) {
    	return(false);
    }
    sprintf(&w_adpt_addr[0], "%02x%02x%02x%02x%02x%02x\0",
            w_adapter.adapt.adapter_address[0],
            w_adapter.adapt.adapter_address[1],
            w_adapter.adapt.adapter_address[2],
            w_adapter.adapt.adapter_address[3],
            w_adapter.adapt.adapter_address[4],
            w_adapter.adapt.adapter_address[5]);

    for (i=0; i<strlen(w_adpt_addr); i++)
    	w_adpt_addr[i] = toupper(w_adpt_addr[i]);
    
    return(true);
}

bool Get_MACAddress( char* mac)
{
	memset(mac,' ',60);

	/***** Static variables definition *****/
    NCB       w_ncb;            	/* Network control block      */
    LANA_ENUM w_lenum;          	/* LAN adapter number struct  */
    UCHAR     w_rtncd;          	/* Netbios return code        */
    char      w_adpt_addr[12+1];	/* Adapter physical address   */ 
    int       i;                	/* Loop counter               */

    /***** Initialize Ncb *****/
    memset(&w_ncb, 0x00, sizeof(w_ncb));

    /***** Enumerates LAN adapter (LANA) numbers *****/
    w_ncb.ncb_command = NCBENUM;
    w_ncb.ncb_buffer  = (UCHAR*) &w_lenum;
    w_ncb.ncb_length  = sizeof(w_lenum);
    
    w_rtncd = Netbios(&w_ncb);

    if ( 0 != w_rtncd ) {
    	return false;
    }
    
    /***** Get each LAN adapter physical address *****/
    for ( i = 0; i < w_lenum.length && i<3; i++ ) {
    	if (!get_lan_adpt_addr(w_lenum.lana[i], w_adpt_addr)) {
    	}
    	else {
			memcpy(&mac[12*i],&w_adpt_addr[0],12);
		}
    }
	return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -