converting unsigned char * to unsigned char**

本文介绍了一种从文件读取图像数据并将其映射到内存中的方法。通过使用指针Buffer从文件中读取全部图像数据后,创建了一个同样指向这些数据的指针I,并进一步将图像分割成行存储到指针数组arr中,便于后续处理。

#include <reg52.h> #include <intrins.h> #include<stdio.h> // LCD1602???? sbit LCD_RS = P1^7; sbit LCD_RW = P1^6; sbit LCD_EN = P1^5; #define LCD_DATA P0 // DS18B20???? sbit DS18B20 = P3^3; // ??DS18B20???P3.3 // NFC (RC522)???? sbit NFC_SDA = P2^7; sbit NFC_SCK = P2^6; sbit NFC_MOSI = P2^5; sbit NFC_MISO = P2^4; sbit NFC_RST = P2^3; // ???? void DelayMS(unsigned int ms); void LCD_Init(); void LCD_WriteCommand(unsigned char cmd); void LCD_WriteData(unsigned char dat); void LCD_SetCursor(unsigned char row, unsigned char col); void LCD_DisplayString(unsigned char row, unsigned char col, unsigned char *str); void DS18B20_Init(); unsigned char DS18B20_ReadByte(); void DS18B20_WriteByte(unsigned char dat); float DS18B20_ReadTemp(); void NFC_Init(); unsigned char NFC_ReadByte(); void NFC_WriteByte(unsigned char dat); void NFC_ReadCardID(unsigned char *id); // ???? void DelayMS(unsigned int ms) { unsigned int i, j; for(i = 0; i < ms; i++) for(j = 0; j < 114; j++); } // LCD??? void LCD_Init() { LCD_WriteCommand(0x38); // 16x2??,5x7??,8????? DelayMS(5); LCD_WriteCommand(0x0C); // ???,???,??? DelayMS(5); LCD_WriteCommand(0x06); // ????????1 DelayMS(5); LCD_WriteCommand(0x01); // ?? DelayMS(5); } // ?LCD?? void LCD_WriteCommand(unsigned char cmd) { LCD_RS = 0; LCD_RW = 0; LCD_DATA = cmd; LCD_EN = 1; _nop_(); _nop_(); LCD_EN = 0; DelayMS(2); } // ?LCD?? void LCD_WriteData(unsigned char dat) { LCD_RS = 1; LCD_RW = 0; LCD_DATA = dat; LCD_EN = 1; _nop_(); _nop_(); LCD_EN = 0; DelayMS(2); } // ??LCD???? void LCD_SetCursor(unsigned char row, unsigned char col) { unsigned char address; if(row == 0) address = 0x80 + col; else address = 0xC0 + col; LCD_WriteCommand(address); } // ????? void LCD_DisplayString(unsigned char row, unsigned char col, unsigned char *str) { LCD_SetCursor(row, col); while(*str != '\0') { LCD_WriteData(*str++); } } // DS18B20??? void DS18B20_Init() { DS18B20 = 0; DelayMS(20); // ??480us?? DS18B20 = 1; DelayMS(5); // ??15-60us while(DS18B20); // ??DS18B20?? DelayMS(5); } // ?DS18B20?????? unsigned char DS18B20_ReadByte() { unsigned char i, dat = 0; for(i = 0; i < 8; i++) { DS18B20 = 0; _nop_(); _nop_(); dat >>= 1; DS18B20 = 1; if(DS18B20) dat |= 0x80; DelayMS(1); } return dat; } // ?DS18B20?????? void DS18B20_WriteByte(unsigned char dat) { unsigned char i; for(i = 0; i < 8; i++) { DS18B20 = 0; DS18B20 = dat & 0x01; DelayMS(1); DS18B20 = 1; dat >>= 1; } } // ????? float DS18B20_ReadTemp() { unsigned char LSB, MSB; int temp; float temperature; DS18B20_Init(); DS18B20_WriteByte(0xCC); // ??ROM DS18B20_WriteByte(0x44); // ?????? DelayMS(200); // ?????? DS18B20_Init(); DS18B20_WriteByte(0xCC); // ??ROM DS18B20_WriteByte(0xBE); // ??????? LSB = DS18B20_ReadByte(); MSB = DS18B20_ReadByte(); temp = ((int)MSB << 8) + LSB; temperature = temp * 0.0625; // 12??? return temperature; } // NFC??? void NFC_Init() { NFC_RST = 0; DelayMS(1); NFC_RST = 1; DelayMS(50); // ???RC522??? NFC_WriteByte(0x0F); // ??? NFC_WriteByte(0x8D); // ????? NFC_WriteByte(0x3E); // ????? NFC_WriteByte(0x1E); // ????? NFC_WriteByte(0x00); // ????? NFC_WriteByte(0x40); // ???? NFC_WriteByte(0x3D); // ????? } // NFC?????? unsigned char NFC_ReadByte() { unsigned char i, dat = 0; NFC_SCK = 0; for(i = 0; i < 8; i++) { NFC_SCK = 1; dat <<= 1; if(NFC_MISO) dat |= 0x01; NFC_SCK = 0; } return dat; } // NFC?????? void NFC_WriteByte(unsigned char dat) { unsigned char i; for(i = 0; i < 8; i++) { NFC_SCK = 0; NFC_MOSI = (dat & 0x80) ? 1 : 0; dat <<= 1; NFC_SCK = 1; } } // ??NFC?? void NFC_ReadCardID(unsigned char *id) { unsigned char i; unsigned char buffer[5]; // ???? NFC_WriteByte(0x52); // ???? for(i = 0; i < 5; i++) { buffer[i] = NFC_ReadByte(); } // ?????????? for(i = 0; i < 4; i++) { id[i] = buffer[i]; } } // ??? void main() { float temperature; unsigned char nfc_id[4]; unsigned char display_buf[16]; // ???LCD LCD_Init(); // ???NFC NFC_Init(); // ?????? LCD_DisplayString(0, 0, "Temp: C"); LCD_DisplayString(1, 0, "NFC ID: "); while(1) { // ??????? temperature = DS18B20_ReadTemp(); sprintf(display_buf, "%.2f", temperature); LCD_DisplayString(0, 6, display_buf); // ?????NFC?? NFC_ReadCardID(nfc_id); sprintf(display_buf, "%02X%02X%02X%02X", nfc_id[0], nfc_id[1], nfc_id[2], nfc_id[3]); LCD_DisplayString(1, 7, display_buf); DelayMS(1000); // ?????? } }检查此代码
09-12
In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:16, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:43, from C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:2: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Adapters/BlinkerMQTT.h: In member function 'virtual char* BlinkerMQTT::token()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Adapters/BlinkerMQTT.h:144:50: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 144 | char * token() { if (!isMQTTinit) return ""; else return MQTT_KEY_MQTT; } | ^~ In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:16, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:43, from C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:2: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Adapters/BlinkerMQTT.h: In member function 'virtual char* BlinkerMQTT::lastRead()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Adapters/BlinkerMQTT.h:963:17: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 963 | else return ""; | ^~ In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:95, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:17, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:43, from C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:2: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApiBase.h: In member function 'char* BlinkerBridge_key::getName()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApiBase.h:196:29: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 196 | else return "false"; | ^~~~~~~ In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:96, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:17, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:43, from C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:2: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h: In member function 'char* BlinkerProtocol::deviceName()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h:104:86: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 104 | char * deviceName() { if (isInit) return conn->deviceName(); else return ""; } | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h: In member function 'char* BlinkerProtocol::authKey()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h:105:83: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 105 | char * authKey() { if (isInit) return conn->authKey(); else return ""; } | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h: In member function 'char* BlinkerProtocol::token()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h:106:79: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 106 | char * token() { if (isInit) return conn->token(); else return ""; } | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h: In member function 'char* BlinkerProtocol::dataParse()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h:257:86: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 257 | char* dataParse() { if (canParse) return conn->lastRead(); else return ""; } | ^~ In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Adapters/BlinkerMQTT.h:46, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:16, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:43, from C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:2: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: At global scope: c:\users\administrator\documents\arduino\libraries\blinker\src\blinker\blinkerconfig.h:226:41: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 226 | #define BLINKER_CMD_BUILTIN_SWITCH "switch" | ^~~~~~~~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:913:71: note: in expansion of macro 'BLINKER_CMD_BUILTIN_SWITCH' 913 | BlinkerWidgets_string _BUILTIN_SWITCH = BlinkerWidgets_string(BLINKER_CMD_BUILTIN_SWITCH); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:17, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:43, from C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:2: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: In member function 'char* BlinkerApi::bridgeKey(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:7831:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 7831 | else return ""; | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: In member function 'char* BlinkerApi::bridgeName(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:7838:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 7838 | else return "false"; | ^~~~~~~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: In member function 'char* BlinkerApi::widgetName_str(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:8467:17: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 8467 | else return ""; | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: In member function 'char* BlinkerApi::widgetName_joy(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:8474:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 8474 | else return ""; | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: In member function 'char* BlinkerApi::widgetName_rgb(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:8481:17: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 8481 | else return ""; | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: In member function 'char* BlinkerApi::widgetName_int(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:8487:17: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 8487 | else return ""; | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: In member function 'char* BlinkerApi::widgetName_tab(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:8493:17: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 8493 | else return ""; | ^~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino: At global scope: C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:38:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 38 | BlinkerNumber FLOW("num-tx5"); | ^~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:39:18: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 39 | BlinkerText MODE("tex-6jr"); | ^~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:40:24: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 40 | BlinkerText FLOW_ALERT("tex-dcn"); | ^~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:41:25: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 41 | BlinkerText WATER_ALERT("tex-zce"); | ^~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:42:23: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 42 | BlinkerText GAS_ALERT("tex-vjr"); | ^~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:43:25: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 43 | BlinkerText POWER_ALERT("tex-gw5"); | ^~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:44:25: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 44 | BlinkerSlider THRESHOLD("ran-bma"); | ^~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:45:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 45 | BlinkerSlider DELAY("ran-xi2"); | ^~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:46:25: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 46 | BlinkerButton VALVE_BTN("swi-o09"); // 按钮组件 | ^~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:47:29: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 47 | BlinkerButton GAS_VALVE_BTN("swi-9fj"); | ^~~~~~~~~ . Variables and constants in RAM (global, static), used 37060 / 80192 bytes (46%) ║ SEGMENT BYTES DESCRIPTION ╠══ DATA 1696 initialized variables ╠══ RODATA 4868 constants ╚══ BSS 30496 zeroed variables . Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 61335 / 65536 bytes (93%) ║ SEGMENT BYTES DESCRIPTION ╠══ ICACHE 32768 reserved space for flash instruction cache ╚══ IRAM 28567 code in IRAM . Code in flash (default, ICACHE_FLASH_ATTR), used 515600 / 1048576 bytes (49%) ║ SEGMENT BYTES DESCRIPTION ╚══ IROM 515600 code in flash A fatal esptool.py error occurred: could not open port 'COM4': FileNotFoundError(2, 'ϵͳ�Ҳ���ָ�����ļ���', None, 2)esptool.py v3.0 Serial port COM4
07-25
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值