实现STM32烧写程序-(2)Flash Loader 发送指令解析

news2024/11/17 22:39:47

简介

实现STM32烧写程序-(1)获取Bootloader版本信息, 看了数据手册之后可以了解到指令的发送, 但实现之前可以使用现成的工具进行测试和查看他的收发情况;

Usart Bootloader 指令列表

Usart Bootloader 指令列表

在这里插入图片描述

应答ACK | NACK

ACK(0x79) 表示 正常答复,
NACK(0x1F) 表示处于保护中或者其他情况

知识点

STM32字节序

STM32芯片的数据存储方式是小端(Little Endian)。在小端存储方式下,较低字节(低位)存储在较低的内存地址,而较高字节(高位)存储在较高的内存地址。

checksum方式

单个字节 : 0xFF - value
multi-bytes : 每个字节进行异或

Flash 块描述(中容量类型)

在这里插入图片描述

Flash Loader 界面与指令

在这里插入图片描述
如上界面, 此时串口收发数据如下:

PC端发送 :  "7f" // 进入Bootloader流程
PC端接收 :  "79" // ACK 正常应答

PC端发送 :  "00ff" // Get 指令
PC端接收 :  "790b22000102112131436373829279" // Get 指令答复

PC端发送 :  "02fd" // 获取芯片ID
PC端接收 :  "7901041079" // 返回芯片ID

PC端发送 :  "02fd" // 获取芯片ID
PC端接收 :  "7901041079"// 返回芯片ID

PC端发送 :  "11ee" // 读取内存指令
PC端接收 :  "79"   // 应答ACK

PC端发送 :  "0800000008" // 读地址08000000 + 08(checksum 每一个byte进行异或)
PC端接收 :  "79" // 应答ACK

PC端发送 :  "03fc" // 读取四个字节, fc是ff-0x03
PC端接收 :  "79a0050020" // ACK + 四个字节数据

PC端发送 :  "11ee" // 读取内存指令
PC端接收 :  "79"// 应答ACK

/* 参考数据手册 [STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced Arm®-based 32-bit MCUs.pdf]
(https://www.st.com/content/ccc/resource/technical/document/reference_manual/59/b9/ba/7f/11/af/43/d5/CD00171190.pdf/files/CD00171190.pdf/jcr:content/translations/en.CD00171190.pdf) 
的 30.1.1 Flash size register , 这里就是获取Flash Memory的大小
 */
PC端发送 :  "1ffff7e0f7"// 读地址1ffff7e0 + f7(checksum 每一个byte进行异或)
PC端接收 :  "79" // 应答ACK

PC端发送 :  "01fe" // 读取两个字节, fe是ff-0x01
PC端接收 :  "794000" //ACK + 两个字节数据, 转化成正常顺序是0040->64(KBytes) 

在这里插入图片描述

PC端发送 :  "02fd" // 获取芯片ID
PC端接收 :  "7901041079" // 返回芯片ID

PC端发送 :  "02fd" // 获取芯片ID
PC端接收 :  "7901041079" // 返回芯片ID

PC端发送 :  "11ee" // 读取内存指令
PC端接收 :  "79"   // 应答ACK

/* 参考数据手册 [STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced Arm®-based 32-bit MCUs.pdf]
(https://www.st.com/content/ccc/resource/technical/document/reference_manual/59/b9/ba/7f/11/af/43/d5/CD00171190.pdf/files/CD00171190.pdf/jcr:content/translations/en.CD00171190.pdf) 
的 30.1.1 Flash size register , 这里就是获取Flash Memory的大小
 */
PC端发送 :  "1ffff7e0f7"// 读地址1ffff7e0 + f7(checksum 每一个byte进行异或)
PC端接收 :  "79" // 应答ACK

PC端发送 :  "01fe" // 读取两个字节, fe是ff-0x01
PC端接收 :  "794000" //ACK + 两个字节数据, 转化成正常顺序是0040->64(KBytes) 

PC端发送 :  "00ff" // Get 指令
PC端接收 :  "790b22000102112131436373829279" // Get 指令答复

PC端发送 :  "11ee" // 读取内存指令
PC端接收 :  "79"   // 应答ACK
/*
	参考 
	https://www.st.com/resource/en/programming_manual/pm0075-stm32f10xxx-flash-memory-microcontrollers-stmicroelectronics.pdf 的 2.5 Option byte description
*/
PC端发送 :  "1ffff80018" // 读取option bytes 信息
PC端接收 :  "79" // 应答ACK

PC端发送 :  "0ff0" // 读取16字节
/*
	ACK + 回复字节 a55a ff00 ff00 ff00 ff00 ff00 ff00 ff00
	a5 读允许 5a是a5 互补字节 
	... 参考上面的pdf文档吧, 很详细的记录了每个bit干什么的,  软件看门狗还是硬件看门狗等...
*/
PC端接收 :  "79a55aff00ff00ff00ff00ff00ff00ff00" 

在这里插入图片描述
点击了Next之后

PC端发送 :  "11ee" // 
PC端接收 :  "79"
PC端发送 :  "0800000008"
PC端接收 :  "79"
PC端发送 :  "01fe"
PC端接收 :  "79a005"
PC端发送 :  "43bc" // 擦除指令
PC端接收 :  "79" // 应答ACK
PC端发送 :  "0800010203040506070800" // 08 表示 9页, 第00\01\02\03\...\08页, 最后的00 是checksum, 所有byte异或
PC端接收 :  "79"  // 应答ACK
PC端发送 :  "31ce" // 写存储
PC端接收 :  "79"// 应答ACK
PC端发送 :  "0800000008" // 写地址08000000 + 08(checksum-每一个字节异或)
PC端接收 :  "79" // 应答ACK
PC端发送 :  "7fa005002001010008e31400087b140008e11400083d0700087d16000800000000000000000000000000000000e71400089507000800000000e5140008e91400081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b010008" // 7F(有效数据127+1个字节) + 127个字节数据 + 
PC端发送 :  "ab" // 与上面是一起的发的, checksum(上面所有字节异或)
PC端接收 :  "79"// 应答ACK
PC端发送 :  "31ce" // 写存储
PC端接收 :  "79" 
PC端发送 :  "0800008088" // 写地址08000080 + 88(checksum-每一个字节异或)
PC端接收 :  "79" // 应答ACK
PC端发送 :  "7f" // 与下面是一起发送的, 属于有效内容大小 (127+1字节)
PC端发送 :  "1b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b0100081b010008dff80cd000f094fa00480047c51f0008a0050020" // 有效内容
PC端发送 :  "50" // checksum
PC端接收 :  "79" // 应答ACK
PC端发送 :  "31ce" 
PC端接收 :  "79"
PC端发送 :  "0800010009"
PC端接收 :  "79"
PC端发送 :  "7f0648804706480047fee7fee7fee7fee7fee7fee7fee7fee7fee7fee74b150008ed000008202a04db203a21fa02f00021704721fa02f3d040c2f120029140084319467047d2b201e000f8012b491efbd270470022f6e710b513460a4604461946fff7f0ff204610bd421c10f8011b0029fbd1801a7047c10f80eae0700844ca0716"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800018089"
PC端接收 :  "79"
PC端发送 :  "7f9623002100f063b800f0004230f000400ad0c10d01f56071c0f3160042ea0151c20840071143704700200146704730b50b46014600202022012409e021fa02f59d4205d303fa02f5491b04fa02f52844151ea2f10102f1dc30bd2de9f05f0546002092469b4688460646814640241be02846414647462246fff794ff53465a46"
PC端发送 :  "53"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080002000a"
PC端接收 :  "79"
PC端发送 :  "7fc01a914110d311461846224600f018fa2d1a67eb01084f4622460120002100f00ffa17eb00094e41201ea4f10104dfdc484631462a464346bde8f09f0029a8bf7047401c490008bf20f00100704710b4b0fa80fc00fa0cf050ea010404bf10bc704749b1ccf1200421fa04f411fa0cf118bf012121430843a3eb0c01cb1d4feaac"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080002808a"
PC端接收 :  "79"
PC端发送 :  "7f00614fea102042bf002010bc704700ebc35010440029a4bf10bc7047401c490008bf20f0010010bc70472de9fe4f804681ea0300c00f0c46009021f0004123f00045b8eb0200a94105d24046214690461c460b46024623f00040104347d0270dc7f30a00c3f30a510290401a019040286bdac3f3130040f4801b0098924620b19b"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080003000b"
PC端接收 :  "79"
PC端发送 :  "7f0023d2eb030a63eb0b0b01985946c0f14002504600f094f906460d4650465946019a00f09cf910eb08006141002487ea115284eae7731a4340d0009a62b3019a012a4fea075215dc001b61eb02014ff0004202ea0752cde90042001c41f5801132462b4600f09cf903b0bde8f08f40462146f9e7001b61eb0201001c41f58013"
PC端发送 :  "f0"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080003808b"
PC端接收 :  "79"
PC端发送 :  "7f"
PC端发送 :  "00185b412018a2f5001747eb030140ead570b6196d4111e06d084fea360645eac0754fea0752001b61eb0201001c41f5801149084fea30000019514132462b4603b0bde8f04f00f05cb90098012240000023d0eb020263ebe073009821464feae074b8eb000061eb0401e9e783f000435be781f0004158e72de9fe4f81ea0304"
PC端发送 :  "11"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080004000c"
PC端接收 :  "79"
PC端发送 :  "7f04f0004421f0004100944ff0000b23f0004350ea01045ed052ea03045bd0c3f30a54c1f30a552c44a4f2f3340194a0fb0254c1f3130141f48011c3f3130343f4801301fb024400fb034e840a970a44ea815447ea8357a4fb076802958d0a05fb07854fea932c04fb0c542705029d4fea065847ea1637b5eb08056eeb070c870eec"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080004808c"
PC端接收 :  "79"
PC端发送 :  "7f920e47ea811742ea8312a7fb0201b6eb0b0164eb00042b0d43ea0c335e1844eb1c50da465146e7fb0201c5f313044fea0b3343ea14534fea0432019c43ea0603a4f10c040294009ccde900b400f0e8f803b0bde8f08f00200146f9e72de9f04d81ea030404f0004b21f0004514464ff0000a23f0004150ea050220d054ea0102"
PC端发送 :  "6f"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080005000d"
PC端接收 :  "79"
PC端发送 :  "7f1dd0c5f30a570246c5f31303c1f31300c1f30a5640f4801543f48013a7eb0608101bd64608f2fd3873eb050002d308f1010801e092185b41b8f1000f03da00200146bde8f08d00204ff48011064684460ee0171b73eb050705d3121b63eb050306434cea010c49084fea300092185b4150ea0107edd152ea030012d082ea040094"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080005808d"
PC端接收 :  "79"
PC端发送 :  "7f83ea0501084305d0101bab4106d20122002306e000224ff0004302e06ff0010253101aeb06004ceb085110eb0a0041eb0b01bde8f04d00f064b8c1f30a52c1f3130140f2ff3341f480119a4202da00200146704740f233439a42a2f2334202dc5242fff79fbd00f02bb8000030b5041e71f1000404db4ff00044404264eb0101"
PC端发送 :  "6e"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080006000e"
PC端接收 :  "79"
PC端发送 :  "7f141e73f1000405db1c464ff00043524263eb0403994208bf904230bd064c074d06e0e06840f0010394e8070098471034ac42f6d3fff75efdb0210008d0210008202a04db203a00fa02f1002070479140c2f1200320fa03f3194390407047202a06dbcb17203a41fa02f043eae07306e041fa02f3d040c2f1200291400843194676"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080006808e"
PC端接收 :  "79"
PC端发送 :  "7f704710b5141e73f1000408da401c41f1000192185b411a4301d120f0010010bd2de9f04d92469b4611b1b1fa81f202e0b0fa80f220329046fff7c2ff04460f4640ea0a0041ea0b0153465a46084313d0114653ea010019d0c8f140025046fff721fd05460e46504659464246fff7a8ff084305d0012004e020463946bde8f08ddf"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080007000f"
PC端接收 :  "79"
PC端发送 :  "7f0020054346eae0762c4337430a986305e40aa0eb08000022fd0a44ea47540a3002d500200146e9e7010510196941dde9084500196941bde8f04da2e7fee708b500216a46435c5354491cc9b20429f9d3009808bd70b50c460546fff705fd800701d0012600e000262846fff7fdfc06eb9000800000220ae0d11702eb917121f03f"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080007808f"
PC端接收 :  "79"
PC端发送 :  "7f03014b59511ac900cb40a354521c8242f2db70bd704772b6fee7000006490020c8610648016941f004010161016941f040010161704700008001002000200240064a0021d16106490a6942f002020a614861086940f04000086170478001002000200240044b0022da61044a136943f001031361018070478001002000200240"
PC端发送 :  "70"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800080000"
PC端接收 :  "79"
PC端发送 :  "7f14480022c168cb06134904d5ca6942f00202ca611022c3685b0705d5cb6943f00103cb6142f00402c369db0707d0cb6943f00403cb61c16921f00101c161a2f58071013901d0c2607047c16921f00101c1617047002002408001002070b5054600f044fa0646114c09e0681c07d025b100f03cfa801ba84201d9032070bde0688d"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800088080"
PC端接收 :  "79"
PC端发送 :  "7fc007f2d1e068800601d52020e060e068c00605d4e069c00702d1e068400703d5fff7aeff012070bd002070bd0020024008c8521e08c192b2fad2704708b501226946fff7f5ff6846fff739ff08bd00002de9f843164688460546002400f002f9284600f039f8074605eb860000f034f81149024600208f600860d01b012202eb"
PC端发送 :  "01"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800090001"
PC端接收 :  "79"
PC端发送 :  "7f"
PC端发送 :  "9020c86069460c4800f048f840b90de058f8242000232946022000f0a3f818b100f090f8bde8f883641c2d1db442efdb00f08ef80020f5e74c00002010b50446044801f026fb2046bde8104001220149fff7bebf0000002010b5094b094a002103eb8124844206d902eb8124844202d802eb812010bd491c4029f1db002010bd2d"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800098081"
PC端接收 :  "79"
PC端发送 :  "7f00540008005000083f2801d900207047014901eb80207047005000082de9f047054626480f460126017e01290fd00121814601762868dff888804cf25034022808d0a2462046fff749ffa8b131e00220bde8f0872046fff741ff08bb0120fff7ddfe2046fff73affd8f81010064621f00401c8f810101ce04ff0ff303860ac6803"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08000a0002"
PC端接收 :  "79"
PC端发送 :  "7f11e02046fff7dcfe5046fff727ffd8f81010060021f00201c8f8101001d03c6007e004f58064d5e9020100eb8120a042e7d8002189f818103046c9e780010020002002400148c06970470000800100200348016941f080010161002070470000002002402de9f05f07461c4888460024017e15461e46012909d0012181460176"
PC端发送 :  "25"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08000a8082"
PC端接收 :  "79"
PC端发送 :  "7f4cf2503a5046fff7e9fe18b122e00220bde8f09f012f02d0022f00d00427d346dff83ca0220128463146fff73bfb81b208eb4400fff796fe5846fff7cffedaf8102022f00102caf8102018b9641ce4b2bc42e7d3002289f81820d9e78001002000200240064900200a69120607d5054a4a60054a4a600969090600d50120704788"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08000b0003"
PC端接收 :  "79"
PC端发送 :  "7f0020024023016745ab89efcd2de9f84fdff8b8910024a9f1040b23460f2709f1040aabf1040ec9e00125a5402a40aa427dd1674ed1f804c0aceb0608b44532d014dcbcf1030f3ad009dcbcf1000f2ad0bcf1010f1cd0bcf1020f31d11de0bcf1110f17d0bcf1120f2ad119e0b8f5881f19d006dcb8f5803f15d0b8f5801f1fd1"
PC端发送 :  "58"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08000b8083"
PC端接收 :  "79"
PC端发送 :  "7f11e0b8f5001f0ed0b8f5041f18d10ae0cb6815e0cb681b1d12e0cb6808330fe0cb680c330ce08b682bb1012b4ff0080303d0456104e0042302e0056100e00023ff2a01d8064601e000f104064fea840501d9a5f12005d6f8008007fa05fc28ea0c0803fa05f548ea0508c6f800804d68ed0062d5374dae6946f00106ae61ad69"
PC端发送 :  "38"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08000c0004"
PC端接收 :  "79"
PC端发送 :  "7f24f0030605f001050095334d06eb050cdcf80850a607360f07fa06f825ea0805dff8b880404503d14ff0000817e044e0dff8ac80404502d14ff001080fe0dff8a480404502d14ff0020808e0dff89880404502d14ff0030801e04ff0040808fa06f848ea0508ccf808804d68d9f80060ed024d4601d5164300e096432e604d68"
PC端发送 :  "1a"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08000c8084"
PC端接收 :  "79"
PC端发送 :  "7fdaf80060ad02554601d5164300e096432e604d68dbf80060ad035d4601d5164300e096432e604d68def80060ed03754601d5164300e096432e60641c0d682a46e5407ff431afbde8f88f00000804014000001110001002400000014000080140000c014000100140001401400148806870470000380000200248816802781144a8"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08000d0005"
PC端接收 :  "79"
PC端发送 :  "7f8160704738000020074810b5016841f010010160032000f067f80f2000f006f800f024f8002010bd0020024070b50d4d04464ff47a712878b1fbf0f00a490968b1fbf0f000f0cefa48b9102c07d200222146501e00f028f800206c6070bd012070bd000038000020440000200c4808b5816941f001018161816901f00101009116"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08000d8085"
PC端接收 :  "79"
PC端发送 :  "7fc16941f08051c161c06900f0805000900448416821f0e06141f00071416008bd0010024000000140f0b40e4b1b680c46c3f30223c3f10705042d00d90425191d072901d2002300e0db1e012606fa05f1491e214099409e40761e16403143f0bc00f05ebc0ced00e0064900f0070208684ff6ff03184040ea0220034a104308607b"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08000e0006"
PC端接收 :  "79"
PC端发送 :  "7f704700000ced00e00000fa052de9f0470f46050061d0434e306800f00700b84209d2306820f0070038433060306800f00700b84251d128683b4c810712d5400703d5606840f4e06060602878000703d5606840f4605060606068a96820f0f000084360602878c00728d06868012810d02168022810d0890700292eda616821f0"
PC端发送 :  "10"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08000e8086"
PC端接收 :  "79"
PC端发送 :  "7f030101436160fff731ff804641f288390de021688903efe78901ede7fff726ffa0eb0801494502d90320bde8f0876068696800f00c00b0eb810fefd1306800f00700b8420bd9306820f0070038433060306800f00700b84201d00120e5e72878400705d56068e96820f4e060084360602878000706d56068296920f4605040ea"
PC端发送 :  "94"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08000f0007"
PC端接收 :  "79"
PC端发送 :  "7f"
PC端发送 :  "c100606000f038f86168084ac1f30311515cc8400649086006480068fff706ff0020c2e700200240001002403a210008440000203c0000200448054900684968044ac1f30221515cc840704744000020001002404a2100080448054900684968044ac1f3c221515cc840704744000020001002404a2100080e4a51680e4801f0"
PC端发送 :  "c4"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08000f8087"
PC端接收 :  "79"
PC端发送 :  "7f0c03042b11d0082b0fd10c48c1f38343c903c05c0ad55168084ac1f34041921e515c054a5043b0fbf1f0704704494843704700000010024000127a002a21000800093d002de9f84f040070d02078c04dc00749d06868c0f38100012807d06868c0f38100022809d16868c00306d52868800339d560680028e7d035e06068b0f528"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800100018"
PC端接收 :  "79"
PC端发送 :  "7f803f0bd010b1b0f5a02f11d0286820f480302860286820f4802002e0286840f480302860606890b1fff760fe06460ae0286840f480202860f0e700bffff756fe801b642873d828688003f7d50ce0fff74dfe064605e000bffff748fe801b6428f0d828688003f7d420789a4e80074ff001094ff0000839d5686810f00c0f07d0"
PC端发送 :  "a4"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800108098"
PC端接收 :  "79"
PC端发送 :  "7f6868c0f38100022809d16868c00306d42868800714d52069012808d110e02069b0b1c6f80090fff721fe074605e00ae1fff71cfec01b0228c4d828688007f7d52868616920f0f80040eac10028600de0c6f80080fff70afe074604e0fff706fec01b022823d828688007f7d4207800072cd57948a169d9b1c0f80090fff7f6fd"
PC端发送 :  "36"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800110019"
PC端接收 :  "79"
PC端发送 :  "7f074604e0fff7f2fdc01b02280fd8686a8007f7d571484ff4fa510068b0fbf1f0009000bf0098411e0091fad20ee080e0c0f80080fff7dafd074604e0fff7d6fdc01b022875d8686a8007f7d42078400760d5e8690027c00008d4e86940f08050e861e869012700f0805000905c480168c90513d40168834641f480710160fff7fb"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800118099"
PC端接收 :  "79"
PC端发送 :  "7f"
PC端发送 :  "b5fd824606e000bffff7b0fda0eb0a0064284ed8dbf80000c005f5d5e06801280ad008b1052813d0286a20f001002862286a20f0040002e0286a40f001002862e06841f2883b98b1fff790fd82460be0286a40f004002862eee700bffff786fda0eb0a0159455ad8286a8007f6d50ce0fff77cfd824605e0fff778fda0eb0a01"
PC端发送 :  "a9"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080012001a"
PC端接收 :  "79"
PC端发送 :  "7f59454cd8286a8007f6d41fb1e86920f08050e861e06988b36968c1f38101022944d00228c6f8608004d0fff75ffd044638e034e0fff75afd074604e0fff756fdc01b02282bd828688001f7d4206ab0f5803f05d16868a16820f4003008436860d4e908010843696821f4741108436860c6f86090fff73afd044606e025e000bfdd"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080012809a"
PC端接收 :  "79"
PC端发送 :  "7ffff734fd001b022809d828688001f7d51be000bffff72afd001b022802d90320bde8f88f28688001f4d40ee00128f7d06868226a00f48031914204d1616a00f47010884201d00120eae70020e8e70000001002400000424280044242440000200070004010b5401eb0f1807f01d3012010bd4ff0e02460610f21601700f0d0f9"
PC端发送 :  "23"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080013001b"
PC端接收 :  "79"
PC端发送 :  "7f0020a06107202061002010bd70b5040004d094f84100002510b106e0012070bd84f84050204600f023f8242084f841002068c16821f40051c160204600f006f92068016921f4904101612068416921f02a0141612068c16841f40051c1606564202084f8410084f842006563002070bd30b585b0002400940194029403940068"
PC端发送 :  "39"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080013809b"
PC端接收 :  "79"
PC端发送 :  "7f1449884224d11448816941f480418161816901f480410491816941f00401816180690e4d00f0040004904ff400700090022001900320039069462846fff7a6fb2815cde90004694628460294fff79efb05b030bd0038014000100240000801402de9f843044690f841001f4616460d46202802d00220bde8f8837db176b10020"
PC端发送 :  "18"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080014001c"
PC端接收 :  "79"
PC端发送 :  "7f6064212084f84100fff770fca6848046e684a068b0f5805f02d003e00120eae7206910b12e4600250ee000260ce08021204600f0e7f8a0b9aeb116f8010b21684860e08c401ee084e08c43464ff0000200970028ebd14ff04001204600f0d2f830b10320c7e735f8020bc0f30800e6e7202084f841000020bde7fee7094808b5bb"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080014809c"
PC端接收 :  "79"
PC端发送 :  "7f816941f020018161816901f020010091816941f004018161806900f00400009008bd0000001002400c4810b50a4901604ff4e1314160002181600c22c160c0e904128161c161fff721ff002803d0bde81040fff760b910bd0038014038010020fee7fee770477047fff706bc30b58fb028216846fef72dfe14210aa8fef729fe"
PC端发送 :  "a9"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080015001d"
PC端接收 :  "79"
PC端发送 :  "7f"
PC端发送 :  "01210804cde900100024029402250491cde907504ff4e01009906846fff752fd08b172b6fee70f20cde90a054ff48060cde90c4002210aa80e94fff767fc002801d072b6fee70fb030bd704770b5044600680169e26821f44051114301612169a0680843616908432168ca6841f20c639a430243ca6020684169a26921f44071"
PC端发送 :  "8c"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080015809d"
PC端接收 :  "79"
PC端发送 :  "7f114341611e492068884202d1fff7e4fc01e0fff7d1fc00ebc00101eb0012606864218000b2fbf0f3b3fbf1f36ff018067343b2fbf0f5b2fbf0f605eb8305322303eb0515b5fbf1f5b6fbf1f605f0f00505eb0615b2fbf0f6b2fbf0f0b0fbf1f06ff01802504306eb800003eb0010b0fbf1f0216800f00f002844886070bd0000"
PC端发送 :  "f4"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080016001e"
PC端接收 :  "79"
PC端发送 :  "7f003801402de9f041984617460e460446069d27e0681c25d02db1fff767fba0eb0800a8421ed920680c3050e8001f21f4d07140e80012002af5d12068143050e8001f21f0010140e80012002af5d1202084f8410084f84200002084f840000320bde8f0812068006836ea000004d00020b842cfd00020f3e70120f9e7fee7000017"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080016809e"
PC端接收 :  "79"
PC端发送 :  "7f0fb4054b10b503a9044a029800f0eaf810bc5df814fb0000a91f0008480000200907090e002804db00f1e02080f80014704700f00f0000f1e02080f8141d704702e008c8121f08c1002afad170477047002001e001c1121f002afbd1704700002de9ff5f82b00021dde90430020dddf840b0034318d044f61050a2f2ff324243"
PC端发送 :  "08"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080017001f"
PC端接收 :  "79"
PC端发送 :  "7f1514119801281fd0a5eb0b00401c5fea000a4ff000064e4fdff83891b046504615d5caf1000413e0119801244aa3012801d16fea0b010298119ac0e90031c0e9024206b0bde8f09fcbf10000dfe704460021404a491842eb0450cde9001012e0e00707d032463b4640464946fef744fe8046894632463b4610461946fef73cfef2"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "080017809f"
PC端接收 :  "79"
PC端发送 :  "7f06460f466410002cead1dde90401dde90023baf1000f06dafef72efe42464b46fef72afe05e0fef799fe42464b46fef795fe04460e460022284bfef717ff03d84ff0ff30014607e00022254b20463146fef76bfdfef7f1fe102409e0002c0adb0a220023fef7f9fc039b30321a55641e50ea0102f2d1641c039ac4f111031444"
PC端发送 :  "a7"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800180010"
PC端接收 :  "79"
PC端发送 :  "7f119a012a03d0012208430dd10ae0084304d000204ff0110b119072e7a3eb0b056d1e0de05b4504dd4ff0000205f1010504e003da4ff00002a5f10105002aecd002981199c0e90231c0e9004579e70000000014400000f03f300000000000f0430000e03f2de9ff4f95b09b468946064600250fe2252877d100242746f84a0121"
PC端发送 :  "42"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800188090"
PC端接收 :  "79"
PC端发送 :  "7f059400e0044316f8013f203b01fa03f01042f7d130782a2811d06ff02f033078a0f13002092a16d8059a44f0020402eb820203eb42021044761c0590efe759f8042b0592002a03da504244f40054059044f00204761c30782e2816d116f8010f44f004042a280dd06ff02f023078a0f13003092b09d807eb870302eb4303c718"
PC端发送 :  "69"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800190011"
PC端接收 :  "79"
PC端发送 :  "7f761cf3e759f8047b761c30786c280fd006dc4c2817d068280dd06a2814d104e0742810d07a280fd10de044f400140ae044f4801401e044f440147278824202d104f58014761c761c307866280bd013dc582877d009dc002875d04528f6d04628f4d047281ad19de118e0632835d0642879d0652812d195e1702873d008dc6728"
PC端发送 :  "62"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800198091"
PC端接收 :  "79"
PC端发送 :  "7ff1d069286fd06e280dd06f2806d1b5e073282cd0752875d0782874d05a46179990476d1c75e1c4f30250022809d003280dd0d9f8001004280dd00d6009f1040967e1d9f80010ea17c1e90052f6e7d9f800100d80f2e70d70f0e719f8041b8df8001000208df80100ea46012003e059f804ab4ff0ff3061074ff0000102d40de013"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08001a0012"
PC端接收 :  "79"
PC端发送 :  "7f08f101018846b9420fda8045f8db1af808100029f4d108e008f1010188468142fadb1af808100029f6d105985b46a0eb080721463846179a00f094fa284400eb080507e04de029e10de01af8010b5a4617999047b8f10108f7d25b4621463846179a13e142e00a220092c4f302524ff0000a022a08d059f804cb032a4feaec7162"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08001a8092"
PC端接收 :  "79"
PC端发送 :  "7f0ad00de029e02ae009f1070121f00702f2e802c1914609e00ffa8cfc4feaec71042a03d14ffa8cfc4feaec71002907da0a460021dcf1000c61eb02012d2202e0220504d52b228df80420012203e0e20701d02022f7e7904659e00a2102e010220de010214ff0000a00910be010224ff0000a44f004040827009203e008224ff0"
PC端发送 :  "d1"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08001b0013"
PC端接收 :  "79"
PC端发送 :  "7f000a0092c4f30252022a05d059f804cb0021032a08d009e009f1070121f00702f2e802c1914605e01ffa8cfc042a01d10cf0ff0c4ff00008220728d5702806d0009b83f0100353ea0a0305d00ee040228df80420012208e05cea010206d030228df804208df8050002229046009b83f0080353ea0a030ad15cea010201d16207"
PC端发送 :  "c8"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08001b8093"
PC端接收 :  "79"
PC端发送 :  "7f05d530228df804204ff001087f1e582804d034a003900ea802900de036a0f9e753466046009afef718fb84460398825c0298401e029002705cea0100f0d1029806a9081a00f1200a600702d524f4803400e00127574502dda7eb0a0000e0002000eb0a01009005984144401a0590e00306d45b462146179a059800f0b3f905449d"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08001c0014"
PC端接收 :  "79"
PC端发送 :  "7f"
PC端发送 :  "002706e001a85a46c05d179990476d1c7f1c4745f6dbe0030cd55b462146179a059800f09ff9054404e030205a46179990476d1c0099481e00900029f5dc08e0029802995a460078491c0291179990476d1cbaf10001aaf1010af1dc65e100000928010030313233343536373839616263646566000000003031323334353637"
PC端发送 :  "1c"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08001c8094"
PC端接收 :  "79"
PC端发送 :  "7f38394142434445460000000000f058f90544761c307800287ff4ecad19b02846bde8f08f620700d4062709f1070222f0070cfce80223e14603f000485fea080c02d00ff2702c0de05fea045c02d50ff2682c07e05feac47c02d00ff2602c01e0aff2700c4ff0ff3823f00043cdf850c065280cd006dc452809d046281dd04728"
PC端发送 :  "42"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08001d0015"
PC端接收 :  "79"
PC端发送 :  "7f"
PC端发送 :  "3dd13de0662818d067287ed138e00021112f01db112000e0781ccde9000106a90ea8fff7ddfcdde90f010e9a03910021009207f1010a04914de04ff000400097cde9011006a90ea8fff7cafcdde90f0203920e9b11990022ddf80ca00093049211b9791c00eb010ab7eb0a0004d4c0f1ff3007f1010a0490aaeb0700019044e0"
PC端发送 :  "f1"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08001d8095"
PC端接收 :  "79"
PC端发送 :  "7f012f00da01270021112f01dd112000e03846cde9000106a90ea8fff7a1fcdde90f010e9a0391002104910092ba4621070cd40399514500da8a46baf1010f05dd009aaaf10101515c302908d0b84202da10f1040f06da0121cde9011015e0aaf10101e9e7002805dc049901440491aaeb000102e0411c514500dd8a460499401a"
PC端发送 :  "88"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08001e0016"
PC端接收 :  "79"
PC端发送 :  "7f401c01904ff000400290200704d40198504501dbcdf8048000208df84f0002980df14f07b0f1004f25d02b200e9002984ff0020800280cda404202902d200e9007e00a210298fef7b2f93031029007f8011db8f10001a8f10108f2dc02980028efd1791e0e980870307800f0200040f0450007f8020d12a8c01b00f107081498"
PC端发送 :  "9e"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08001e8096"
PC端接收 :  "79"
PC端发送 :  "7f007800b1012000eb0a01019801ebe07105984144401a401e0590e00306d45b462146179a059800f05df805441498007818b15a46179990476d1ce00324d55b462146179a059800f04df805441ce00498002807dbdde90301884203dd0098405c179901e0179930205a469047049805f10105401c04900198401e019004d12e20"
PC端发送 :  "e7"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08001f0017"
PC端接收 :  "79"
PC端发送 :  "7f5a46179990476d1cbaf10001aaf1010adddc05e017f8010b5a46179990476d1cb8f10001a8f10108f4dc5b462146179a0598abe62d0000002b000000200000002de9f041044600251e461746880404d405e039462020b0476d1c641ef9d52846bde8f0812de9f041044600251e469046c80301d5302700e02027880404d505e0"
PC端发送 :  "d9"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08001f8097"
PC端接收 :  "79"
PC端发送 :  "7f41463846b0476d1c641ef9d52846bde8f08108b56a4600910021535c4354491cc9b20429f9d308bd08b54ff6ff738df80000012269460248fff712fa002008bd38010020fef7a0fefff790fafff756fafff76afa39a0fff753fb0020fef7d4fc09223a49fef774fc0020fef7cdfc0a223749fef75dfc37a0fff742fb344d00249b"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800200028"
PC端接收 :  "79"
PC端发送 :  "7f37a055f82410fff73bfb641c092cf7db35a0fff735fb2d4c103c2068fef7a4f8800701d0012500e000252068fef79cf805eb90050120fef7a7fcaab22168fef747fc0120fef7a0fcaab22149fef730fc1f491f487831fef77dfb1d4924a07831fff70efb6068fef786f805460220fef78bfc2946fef762fc0220fef785fcfef713"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08002080a8"
PC端接收 :  "79"
PC端发送 :  "7f"
PC端发送 :  "1dfce060fef780f802460b461ca0fff7f7fa0320fef778fca168fef74ffc0320fef772fcfef70afce060fef76df802460b4618a0fff7e4fafee7000048656c6c6f20576f726c64210d0a0000140000205c0000205278446174613a207b20000030782558200000007d3b0d0a00000000537472696e673a2025730d0a00000000c4"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "0800210029"
PC端接收 :  "79"
PC端发送 :  "7f52656164204e756d5f313a2025660d0a0000000052656164204e756d5f323a2025660d0a00000000010202030405060708090a0b0c0d0e0f1010000000000000000001020304060708090000000001020304000068656c6c6f20464c4153482066726f6d20436f6e74726f6c6c65725465636809090920205468697320697320"
PC端发送 :  "49"
PC端接收 :  "79"
PC端发送 :  "31ce"
PC端接收 :  "79"
PC端发送 :  "08002180a9"
PC端接收 :  "79"
PC端发送 :  "7f61207465737420746f2073656520686f77206d616e7920776f7264732063616e20776520776f726b2077697468000000d0210008000000204c000000c01600081c2200084c00002054050000d016000800000000542100087b00000079e9f6420000000001000000020000000300000004000000050000000600000007000000a7"
PC端接收 :  "79"
PC端发送 :  "11ee" // 读取存储
PC端接收 :  "79"
PC端发送 :  "080022002a" // 读地址 08002200 
PC端接收 :  "79" 
PC端发送 :  "1be4" // 读取大小1b字节 + 互补e4
PC端接收 :  "79ffffffffffffffffffffffffffffffffffffffffffffffffffffffff" // 返回数据
PC端发送 :  "31ce" // 写存储
PC端接收 :  "79"
PC端发送 :  "080022002a" // 写地址08002200
PC端接收 :  "79"
PC端发送 :  "1b08000000090000000100000010000000000000000024f40000000000db" // 1b 是字节数 + 剩下的程序字节 + db(checksum)
PC端接收 :  "79"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1385158.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mybatis中的驼峰转换

一、有啥用 开发时常用对象来存储从数据库中的记录,开启驼峰转化即可实现数据库字段(通常使用_下划线连接)与对象属性的对应,如数据库中的first_name字段会转化为firstName与对象中的firstName属性对应。 二、配置 三、相关报错 数据库字段与对象属性…

我为什么要写RocketMQ消息中间件实战派上下册这本书?

我与RocketMQ结识于2018年,那个时候RocketMQ还不是Apache的顶级项目,并且我还在自己的公司做过RocketMQ的技术分享,并且它的布道和推广,还是在之前的首席架构师的带领下去做的,并且之前有一个技术神经质的人&#xff0…

广告投放场景中ABtest分析的评价、优化和决策建议

写在开头 在当今数字化的商业环境中,广告投放是企业获取客户和推动销售的重要手段。然而,随着市场竞争的加剧,制定有效的广告策略变得愈发复杂。在这个背景下,AB测试成为了广告主们不可或缺的工具之一。本文将深入探讨广告投放中…

swing快速入门(四十四)拖动、编辑JTree结点

注释很详细,直接上代码 新增内容(源码细节知识点巨多,建议细看) 1.设置JTree可编辑 2.使用JTree关联的数据模型实现节点的增删改 3.鼠标拖动节点事件设计及处理方法 4.手动刷新视图与自动刷新的方法区别 5.自定位节点视图方法 源码…

zepplin记录1

zepplin记录1 文章目录 zepplin记录1前言一、配置python环境二、测试可用性1.配置interpreter2.测试代码 总结 前言 Apache Zeppelin是一个开源的数据分析和可视化的交互式笔记本,类似于Jupyter Notebook。它支持多种编程语言(如Scala、Python、R、SQL等…

多线程——阻塞队列

什么是阻塞队列 相比于一般的队列,有两个特点 1.线程安全 2.带有阻塞功能 1)队伍为空时,出队列就会出现阻塞,阻塞到其他线程入队列为止 2)队伍为满时,入队列就会出现阻塞,阻塞到其他线程出队列…

pandas查看数据常用方法(以excel为例)

目录 1.查看指定行数的数据head() 2. 查看数据表头columns 3.查看索引index 4.指定索引列index_col 5.按照索引排序 6.按照数据列排序sort_values() 7.查看每列数据类型dtypes 8.查看指定行列数据loc 9.查看数据是否为空isnull() 1.查看指定行数的数据head() &#xff…

【教3妹学编程-算法题】最大频率元素计数

2哥 : 3妹,最近有个电视剧《繁花》非常火🔥,你听说了吗? 3妹:没有,最近一直在忙着找工作,哪有时间看电视啊 2哥 : 啊?大周末还不休息一下啊,这么辛苦。 3妹:当…

CAN/CANFD数据记录仪汽车电子售后神器

CAN数据记录仪是一种用于采集和存储CAN总线数据的工具,广泛应用于汽车、轨道车辆、工业控制等大数据量且不易排查故障的系统中。它可以实时存储总线上的数据,方便后续的研究和分析。解决工程师售后难点。 在选择CAN数据记录仪时,需要根据实…

Jenkins-自动化

定时构建 使用Cron表达式指定执行时间。 # 格式 # ┌──分(0 - 59) # │ ┌──时(0 - 23) # │ │ ┌──日(1 - 31) # │ │ │ ┌─月(1 - 12) # │ │ │ │ ┌─星期&#…

CSC8021_computer network_The Application Layer

The Role of the Application layer The Application layer is the interface between the network and its users › It contains network services (e.g. DNS) › It contains user applications (e.g. email, web browsing) Domain Name System (DNS) › The …

python 字符串的详细处理方法

当前版本: Python 3.8.4 简介 字符串是由字符组成的序列,可以用单引号、双引号或三引号(单引号或双引号的连续使用)括起来。一般用来表示和处理文本信息,可以是字母、数字、标点符号以及其他特殊字符,用于…

将PDF发票转换为excel、xml结构化数据的完美解决方案

随着电子发票的普及,越来越多的企业和个人开始使用PDF格式的电子发票。然而,有时我们需要将电子发票转换为XML格式以便于处理和分析。本文将介绍如何将收到的PDF发票下载为excel、xml文件。首先,我们需要明确一点,PDF是一种基于图…

微服务概述之微服务特性

前言 既然系统采用了微服务架构,就需要了解一些微服务的特性,这样在进行微服务开发时,脑海中才会有一些指导方向。微服务具有以下特性。 1. 服务组件化 组件是独立、可替换、可升级的软件的单元。将整体应用拆分成独立的服务组件后&#xff…

【算法分析与设计】和为k的子数组

目录 问题 示例 方案一: 思路: 算法设计 代码实现 运行结果: 方案二(调优) 思路(前缀和) 算法设计 示意图 代码实现 运行结果 问题 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数…

Python提取PDF中部分页面的实战代码

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【小沐学GIS】基于OpenSceneGraph(OSG)绘制三维数字地球Earth

🍺三维数字地球系列相关文章如下🍺:1【小沐学GIS】基于C绘制三维数字地球Earth(OpenGL、glfw、glut)第一期2【小沐学GIS】基于C绘制三维数字地球Earth(OpenGL、glfw、glut)第二期3【小沐学GIS】…

CSS 一行三列布局,可换行(含grid网格布局、flex弹性布局/inline-block布局 + 伪类选择器)

效果 一、HTML <div class"num-wrap"><div class"num-item" v-for"num in 8" :key"num">{{ num }}</div></div> 二、CSS 1、grid网格布局&#xff08;推荐&#xff09; .num-wrap {// grid网格布局display…

Python轻松实现炫酷的手势检测

大家好&#xff0c;今天分享一个非常有意思且十分简单的python库——mediapipe库。该库集成了大量的深度学习模型&#xff0c;短短几行代码&#xff0c;就可以快速实现一个炫酷的实例&#xff0c;本文就以手势检测为例&#xff0c;展示一下这个强大的开源库。 mediapipe由Goog…

书生·浦语大模型实战营作业(四)

基础作业&#xff1a; 构建数据集&#xff0c;使用 XTuner 微调 InternLM-Chat-7B 模型, 让模型学习到它是你的智能小助手&#xff0c;效果如下图所示&#xff0c;本作业训练出来的模型的输出需要将不要葱姜蒜大佬替换成自己名字或昵称&#xff01; 数据集 回答结果 进阶作…