当前位置:首页 > 公众号精选 > 腾博会最新下载网站大杂烩
[导读]腾博会最新下载网站开发中,常常会自定义一些腾博会最新下载网站,比如用于板与板之间的腾博会最新下载网站、客户端与服务端之间的腾博会最新下载网站等。自定义的腾博会最新下载网站可能有很多种,本篇文章我们来介绍一种很常用、实用、且灵活性很高的腾博会最新下载网站——ITLV格式。

腾博会最新下载网站开发中,常常会自定义一些腾博会最新下载网站,比如用于板与板之间的腾博会最新下载网站、客户端与服务端之间的腾博会最新下载网站等。

自定义的腾博会最新下载网站可能有很多种,本篇文章我们来介绍一种很常用、实用、且灵活性很高的腾博会最新下载网站——ITLV格式。

亚星娱乐登录网页版

大家可能看到网络上的很多文章用的是TLV(Tag、Length、Value)格式数据。实际中,可以根据实际需要进行修改。我们这里稍微改一下,实际上也是大同小异的。

我们这里的ITLV各字段的含义:

  • I:ID或Index,用于区分是什么数据。
  • T:Type,代表数据类型,如int、float等。
  • L:Length,表示数据的长度(Value的长度)。
  • V:Value,表示实际的数据。

其中,I、T、L是固定长度的,在制定具体的数据协议之前,需要评估好当前项目的数据会有多少、数据的最大长度是多少,考虑好后续数据扩展也可以保证协议通用。一般I设置为1~2字节,T设置为1字节,L设置为1~4字节。

下面我们制定一个格式:

实际中,如果在物联网系统中数据传输,我们用户自定义的协议字段可能就只包含如上四个字段就可以了。比如我们公司的云平台上的用户数据格式用的就是类似ITLV这样的格式。用户在制定协议时的协议字段包含如上字段就可以了。

没有包头做一些数据区分,也没有校验字段,只包含如上字段就能保证数据可靠传输吗?

因为端云腾博会最新下载网站采用MQTT,基于TCP,TCP的特点就是可靠的,网络协议中会带有校验。并且,实际在传输用户数据时,还会再用户数据之前增加一些字段区分这就是用户数据。所以,其实基于它的设备SDK来进行开发,操作的数据就是如上的数据。

但是,如果应用于板与板之间的腾博会最新下载网站,只包含如上字段自然是有风险的。我们至少还需要还要包头、校验字段。

实际中根据需要还可以增加其它字段,比如如果需要分包发送,还需要增加包号;如果多块板之间进行腾博会最新下载网站,还需要增加发送数据目标地址等。

这里我们增加包头与校验字段:

其中:

(1)Head固定为0x55、0xAA。

(2)Length为1字节,即Value最大为256B。

亚星娱乐官网注册网站

下面以例子来演示ITLV格式数据的处理。

下面我们以上面我们制定的协议编写A板的组包、解析代码。

亚星娱乐官网app下载中心

首先,我们创建一个腾博会最新下载网站结构体:

										
										
											#pragma
												pack(1)
											
											// 腾博会最新下载网站
											typedef
											
												struct
												_protocol_format
												{
											uint16_t
											head;
											uint8_t
											id;
											uint8_t
											type;
											uint8_t
											length;
											uint8_t
											value[]; }protocol_format_t;
									

type字段的取值:

												
												
													// TLV 数据类型type
													typedef
													enum
													_tlv_type {     TLV_TYPE_UINT8,     TLV_TYPE_INT8,     TLV_TYPE_UINT16,     TLV_TYPE_INT16,     TLV_TYPE_UINT32,     TLV_TYPE_INT32,     TLV_TYPE_STRING,     TLV_TYPE_FLOAT,     TLV_TYPE_BYTE_ARR,
													// 字节数组
													}tlv_type_e;
											

下面设计我们的收、发数据结构,大致思路如下:

我们创建一个总的结构体,用于管理A板往B板发送及A板接受来自B板的数据:

														
														
															// 总的协议数据
															typedef
															
																struct
																_protocol_data
																{
															protocol_id_e id;
															protocol_value_t
															value; }protocol_data_t;
													

其中,成员id是一个枚举:

左右滑动查看全部代码>>>

																
																
																	// 数据ID
																	typedef
																	enum
																	_protocol_id {
																	// A板发往B板
																	PROTOCOL_ID_A_TO_B_BASE =
																	0x00,     PROTOCOL_ID_A_TO_B_CTRL_CMD,     PROTOCOL_ID_A_TO_B_DATE_TIME,     PROTOCOL_ID_A_TO_B_END =
																	0x7F,
																	// B板发往A板
																	PROTOCOL_ID_B_TO_A_BASE =
																	0x80,     PROTOCOL_ID_B_TO_A_WORK_STATUS,     PROTOCOL_ID_B_TO_A_END =
																	0xFF, }protocol_id_e;
															

包含着A->B、B->A的ID,因为ID是用1个字节标识,收、发的ID各预留一半,新增的ID在各自的BASE ID及END ID之间添加。

成员value是一个联合体,用于管理A->B、B->A的value数据:

左右滑动查看全部代码>>>

																		
																		
																			// 所有协议数据value值
																			typedef
																			union
																			_protocol_value {
																			protocol_value_a_to_b_t
																			a_to_b_value;
																			protocol_value_b_to_a_t
																			b_to_a_value; }protocol_value_t;
																	

a_to_b_value及b_to_a_value也是联合体,用于管理更细分的数据:

左右滑动查看全部代码>>>

																				
																				
																					// A板发往B板的数据value值
																					typedef
																					union
																					_protocol_value_a_to_b {
																					protocol_data_ctrl_cmd_t
																					ctrl_cmd;
																					protocol_data_time_t
																					date_time; }protocol_value_a_to_b_t;
																					// B板发往A板的数据value值
																					typedef
																					union
																					_protocol_value_b_to_a {
																					protocol_data_work_status_t
																					work_status; }protocol_value_b_to_a_t;
																			

更细分的数据:

左右滑动查看全部代码>>>

																						
																						
																							// 控制命令
																							typedef
																							enum
																							_ctrl_cmd {     CTRL_CMD_LED_ON,     CTRL_CMD_LED_OFF }ctrl_cmd_e;
																							typedef
																							
																								struct
																								_protocol_data_ctrl_cmd
																								{
																							ctrl_cmd_e cmd; }protocol_data_ctrl_cmd_t;
																							// 时间数据
																							typedef
																							
																								struct
																								_protocol_data_time
																								{
																							int
																							year;
																							int
																							mon;
																							int
																							mday;
																							int
																							hour;
																							int
																							min;
																							int
																							sec; }protocol_data_time_t;
																							// 工作状态
																							typedef
																							enum
																							_work_status {     WORK_STATUS_NORMAL,     WORK_STATUS_ERROR }work_status_e;
																							typedef
																							
																								struct
																								_protocol_data_work_status
																								{
																							work_status_e status; }protocol_data_work_status_t;
																					

明确了我们需要进行交互的数据的类型之后,解析来我们就可以根据它们的特点来编写组包、解析函数了。

亚星娱乐官网注册网站

大致思路如下:

组包函数:

左右滑动查看全部代码>>>

																								
																								
																									
																										int
																										protocol_data_packet
																										(uint8_t
																											*buf,
																											uint16_t
																											len,
																											protocol_data_t
																											*protocol_data)
																									{
																									int
																									ret =
																									-1;
																									int
																									value_len =
																									0;
																									int
																									offset =
																									0;
																									protocol_format_t
																									*p_protocol_format =
																									NULL;
																									if
																									(!buf || !protocol_data || len printf("Invalid input argument!\n");
																									return
																									ret;     }
																									// 通过ID来获取value的长度
																									switch
																									(protocol_data->id)     {
																									case
																									PROTOCOL_ID_A_TO_B_CTRL_CMD:         {
																									printf("PROTOCOL_ID_A_TO_B_CTRL_CMD\n");             value_len =
																									sizeof(protocol_data->value.a_to_b_value.ctrl_cmd);
																									printf("protocol_format.length = %d\n", value_len);
																									break;         }
																									case
																									PROTOCOL_ID_A_TO_B_DATE_TIME:         {
																									printf("PROTOCOL_ID_A_TO_B_DATE_TIME\n");             value_len =
																									sizeof(protocol_data->value.a_to_b_value.date_time);
																									printf("value_len = %d\n", value_len);
																									break;         }
																									default:
																									break;     }
																									// 为腾博会最新下载网站数据申请内存
																									p_protocol_format = (protocol_format_t
																									*)malloc(sizeof(protocol_format_t) + value_len);
																									if
																									(NULL
																									== p_protocol_format)     {
																									printf("malloc error\n");
																									return
																									ret;     }
																									// 填充协议数据各字段
																									p_protocol_format->head = PROTOCOL_HEAD;     p_protocol_format->id = protocol_data->id;     p_protocol_format->type = TLV_TYPE_BYTE_ARR;     p_protocol_format->length = value_len;
																									if
																									(p_protocol_format->length <= PROTOCOL_VALUE_MAX_LEN) {
																									memcpy(p_protocol_format->value, &protocol_data->value.a_to_b_value, p_protocol_format->length);     }
																									else
																									{
																									printf("protocol_format.length > PROTOCOL_VALUE_MAX_LEN\n");     }
																									// 计算校验值
																									uint32_t
																									crc_data_len =
																									sizeof(protocol_format_t) + value_len;
																									uint16_t
																									crc16 = crc16_x25_check((uint8_t*)p_protocol_format, crc_data_len);
																									printf("crc16 = %#x\n", crc16);
																									// struct -> buf
																									memcpy(buf, p_protocol_format, crc_data_len);     offset += crc_data_len;
																									memcpy(buf + offset, &crc16,
																									sizeof(uint16_t));     offset +=
																									sizeof(uint16_t);
																									// 释放内存
																									free(p_protocol_format);     p_protocol_format =
																									NULL;
																									return
																									offset; }
																							

亚星娱乐官网app下载中心

大致思路如下:

解包函数:

左右滑动查看全部代码>>>

																										
																										
																											// 解包函数
																											
																												void
																												protocol_data_parse
																												(protocol_data_t
																													*protocol_data,
																													uint8_t
																													*buf,
																													uint16_t
																													len)
																											{
																											protocol_format_t
																											*p_protocol_format =
																											NULL;
																											if
																											(!buf || !protocol_data || len printf("Invalid input argument!\n");
																											return;     }
																											// 为腾博会最新下载网站数据申请内存
																											int
																											value_len = buf[PROTOCOL_LENGTH_INDEX];     p_protocol_format = (protocol_format_t
																											*)malloc(sizeof(protocol_format_t) + value_len);
																											if
																											(NULL
																											== p_protocol_format)     {
																											printf("malloc p_protocol_format error\n");
																											return;     }
																											// buf -> struct
																											memcpy(p_protocol_format, buf,
																											sizeof(protocol_format_t) + value_len);
																											printf("protocol_data->id = %#x\n", p_protocol_format->id);
																											// 通过数据ID来解析各对应的数据
																											switch
																											(p_protocol_format->id)     {
																											case
																											PROTOCOL_ID_B_TO_A_WORK_STATUS:         {
																											printf("PROTOCOL_ID_B_TO_A_WORK_STATUS\n");
																											uint8_t
																											work_status_len =
																											sizeof(protocol_data->value.b_to_a_value.work_status);
																											if
																											(p_protocol_format->length == work_status_len)             {
																											memcpy(&protocol_data->value.b_to_a_value.work_status, p_protocol_format->value, p_protocol_format->length);             }
																											else
																											{
																											printf("p_protocol_format->length error\n");             }
																											break;         }
																											default:
																											break;     }
																											// 释放内存
																											free(p_protocol_format);     p_protocol_format =
																											NULL; }
																									

亚星娱乐官网注册开户

CRC16分很多种:CRC16-X25、CRC16-MODBUS、CRC16-XMODEM等。

这里我们使用CRC16-X25:

																												
																												
																													static
																													const
																													unsigned
																													short crc16_table[256] =  {
																													0x0000,
																													0x1189,
																													0x2312,
																													0x329b,
																													0x4624,
																													0x57ad,
																													0x6536,
																													0x74bf,
																													0x8c48,
																													0x9dc1,
																													0xaf5a,
																													0xbed3,
																													0xca6c,
																													0xdbe5,
																													0xe97e,
																													0xf8f7,
																													0x1081,
																													0x0108,
																													0x3393,
																													0x221a,
																													0x56a5,
																													0x472c,
																													0x75b7,
																													0x643e,
																													0x9cc9,
																													0x8d40,
																													0xbfdb,
																													0xae52,
																													0xdaed,
																													0xcb64,
																													0xf9ff,
																													0xe876,
																													0x2102,
																													0x308b,
																													0x0210,
																													0x1399,
																													0x6726,
																													0x76af,
																													0x4434,
																													0x55bd,
																													0xad4a,
																													0xbcc3,
																													0x8e58,
																													0x9fd1,
																													0xeb6e,
																													0xfae7,
																													0xc87c,
																													0xd9f5,
																													0x3183,
																													0x200a,
																													0x1291,
																													0x0318,
																													0x77a7,
																													0x662e,
																													0x54b5,
																													0x453c,
																													0xbdcb,
																													0xac42,
																													0x9ed9,
																													0x8f50,
																													0xfbef,
																													0xea66,
																													0xd8fd,
																													0xc974,
																													0x4204,
																													0x538d,
																													0x6116,
																													0x709f,
																													0x0420,
																													0x15a9,
																													0x2732,
																													0x36bb,
																													0xce4c,
																													0xdfc5,
																													0xed5e,
																													0xfcd7,
																													0x8868,
																													0x99e1,
																													0xab7a,
																													0xbaf3,
																													0x5285,
																													0x430c,
																													0x7197,
																													0x601e,
																													0x14a1,
																													0x0528,
																													0x37b3,
																													0x263a,
																													0xdecd,
																													0xcf44,
																													0xfddf,
																													0xec56,
																													0x98e9,
																													0x8960,
																													0xbbfb,
																													0xaa72,
																													0x6306,
																													0x728f,
																													0x4014,
																													0x519d,
																													0x2522,
																													0x34ab,
																													0x0630,
																													0x17b9,
																													0xef4e,
																													0xfec7,
																													0xcc5c,
																													0xddd5,
																													0xa96a,
																													0xb8e3,
																													0x8a78,
																													0x9bf1,
																													0x7387,
																													0x620e,
																													0x5095,
																													0x411c,
																													0x35a3,
																													0x242a,
																													0x16b1,
																													0x0738,
																													0xffcf,
																													0xee46,
																													0xdcdd,
																													0xcd54,
																													0xb9eb,
																													0xa862,
																													0x9af9,
																													0x8b70,
																													0x8408,
																													0x9581,
																													0xa71a,
																													0xb693,
																													0xc22c,
																													0xd3a5,
																													0xe13e,
																													0xf0b7,
																													0x0840,
																													0x19c9,
																													0x2b52,
																													0x3adb,
																													0x4e64,
																													0x5fed,
																													0x6d76,
																													0x7cff,
																													0x9489,
																													0x8500,
																													0xb79b,
																													0xa612,
																													0xd2ad,
																													0xc324,
																													0xf1bf,
																													0xe036,
																													0x18c1,
																													0x0948,
																													0x3bd3,
																													0x2a5a,
																													0x5ee5,
																													0x4f6c,
																													0x7df7,
																													0x6c7e,
																													0xa50a,
																													0xb483,
																													0x8618,
																													0x9791,
																													0xe32e,
																													0xf2a7,
																													0xc03c,
																													0xd1b5,
																													0x2942,
																													0x38cb,
																													0x0a50,
																													0x1bd9,
																													0x6f66,
																													0x7eef,
																													0x4c74,
																													0x5dfd,
																													0xb58b,
																													0xa402,
																													0x9699,
																													0x8710,
																													0xf3af,
																													0xe226,
																													0xd0bd,
																													0xc134,
																													0x39c3,
																													0x284a,
																													0x1ad1,
																													0x0b58,
																													0x7fe7,
																													0x6e6e,
																													0x5cf5,
																													0x4d7c,
																													0xc60c,
																													0xd785,
																													0xe51e,
																													0xf497,
																													0x8028,
																													0x91a1,
																													0xa33a,
																													0xb2b3,
																													0x4a44,
																													0x5bcd,
																													0x6956,
																													0x78df,
																													0x0c60,
																													0x1de9,
																													0x2f72,
																													0x3efb,
																													0xd68d,
																													0xc704,
																													0xf59f,
																													0xe416,
																													0x90a9,
																													0x8120,
																													0xb3bb,
																													0xa232,
																													0x5ac5,
																													0x4b4c,
																													0x79d7,
																													0x685e,
																													0x1ce1,
																													0x0d68,
																													0x3ff3,
																													0x2e7a,
																													0xe70e,
																													0xf687,
																													0xc41c,
																													0xd595,
																													0xa12a,
																													0xb0a3,
																													0x8238,
																													0x93b1,
																													0x6b46,
																													0x7acf,
																													0x4854,
																													0x59dd,
																													0x2d62,
																													0x3ceb,
																													0x0e70,
																													0x1ff9,
																													0xf78f,
																													0xe606,
																													0xd49d,
																													0xc514,
																													0xb1ab,
																													0xa022,
																													0x92b9,
																													0x8330,
																													0x7bc7,
																													0x6a4e,
																													0x58d5,
																													0x495c,
																													0x3de3,
																													0x2c6a,
																													0x1ef1,
																													0x0f78
																													};
																													
																														uint16_t
																														crc16_x25_check
																														(uint8_t* data,
																															uint32_t
																															length)
																													{
																													unsigned
																													short crc_reg =
																													0xFFFF;
																													while
																													(length--)  {   crc_reg = (crc_reg >>
																													8) ^ crc16_table[(crc_reg ^ *data++) &
																													0xff];  }
																													return
																													(uint16_t)(~crc_reg) &
																													0xFFFF; }
																											

亚星娱乐官网注册开户

下面我们编写组包、解包测试代码:

  • 组包控制命令数据,并把组包之后的发送缓冲区中的数据打印出来。
  • 组包时间数据,并把组包之后的发送缓冲区中的数据打印出来。
  • 从一个模拟的工作状态接受缓冲区数据中解析工作状态数据并打印出来。

测试代码如:

左右滑动查看全部代码>>>

																														
																														
																															// 微信公众号:腾博会最新下载网站大杂烩
																															#include
																																
																																	
																																	
																																
																															
																															#include
																																
																																	
																																
																															
																															#include
																																"protocol_tlv.h"
																															
																															
																																int
																																main
																																(int
																																	arc,
																																	char
																																	*argv[])
																															{
																															static
																															uint8_t
																															send_buf[PROTOCOL_MAX_LEN] = {0};
																															protocol_data_t
																															protocol_data_send = {0};
																															int
																															send_len =
																															0;
																															printf("\n==============================test packet===========================================\n");
																															// 模拟组包发送控制命令
																															bzero(send_buf,
																															sizeof(send_buf));     bzero(&protocol_data_send,
																															sizeof(protocol_data_t));     protocol_data_send.id = PROTOCOL_ID_A_TO_B_CTRL_CMD;     protocol_data_send.value.a_to_b_value.ctrl_cmd.cmd = CTRL_CMD_LED_OFF;     send_len = protocol_data_packet(send_buf, PROTOCOL_MAX_LEN, &protocol_data_send);
																															printf("send ctrl data = ");     print_hex_data_frame(send_buf, send_len);
																															// 模拟组包发送时间数据
																															bzero(send_buf,
																															sizeof(send_buf));     bzero(&protocol_data_send,
																															sizeof(protocol_data_t));     protocol_data_send.id = PROTOCOL_ID_A_TO_B_DATE_TIME;     protocol_data_send.value.a_to_b_value.date_time.year =
																															2022;     protocol_data_send.value.a_to_b_value.date_time.mon =
																															8;     protocol_data_send.value.a_to_b_value.date_time.mday =
																															20;     protocol_data_send.value.a_to_b_value.date_time.hour =
																															8;     protocol_data_send.value.a_to_b_value.date_time.min =
																															8;     protocol_data_send.value.a_to_b_value.date_time.sec =
																															8;     send_len = protocol_data_packet(send_buf, PROTOCOL_MAX_LEN, &protocol_data_send);
																															printf("send date_time data = ");     print_hex_data_frame(send_buf, send_len);
																															printf("\n==============================test parse===========================================\n");
																															// 模拟解析工作状态数据
																															uint8_t
																															work_status_buf[11] = {0x55,
																															0xAA,
																															0x81,
																															0x08,
																															0x04,
																															0x01,
																															0x00,
																															0x00,
																															0x00,
																															0xf2,
																															0x88};
																															protocol_data_t
																															protocol_data_recv = {0};
																															uint16_t
																															calc_crc16 = crc16_x25_check(work_status_buf,
																															sizeof(work_status_buf) -
																															2);
																															uint16_t
																															recv_crc16 = (uint16_t)(work_status_buf[10] <<
																															8) | work_status_buf[9];
																															if
																															(calc_crc16 == recv_crc16)     {         protocol_data_parse(&protocol_data_recv, work_status_buf,
																															sizeof(work_status_buf));
																															printf("work_status = %d\n", protocol_data_recv.value.b_to_a_value.work_status.status);     }
																															return
																															0; }
																													

编译、运行:

对照着我们制定的协议,数据完全正确!

亚星娱乐登录官方入口

ITLV格式具有很强的灵活性,我们这里使用的数据类型Type为字节数组,其实使用字符串类型也很常用,比如为了协议具备更强的可读性、方便调试,可以在Value字段里再封装一层JSON格式数据。其实我觉得Type的选项只保留字节数组及字符串就够用了,可以满足所有情况。

当然,可能有些数据长度总是定长的,也可以用其它定长的类型。比如数据都是一些定长的类型,那么L字段也可以省略掉。实际中,比较通用的做法就是:全用字节数组或者全用字符串。别混着用,代码可能会很混乱。

亚星娱乐官网官网平台

大家如果需要本篇文章的demo工程,也可以在本公众号后台回复关键词:ITLV腾博会最新下载网站 ,即可获取。

以上本次的分享,期待你的三连支持!

注意

由于微信公众号近期改变了推送规则,为了防止找不到,可以星标置顶,这样每次推送的文章才会出现在您的订阅列表里。

猜你喜欢:

访问非法内存为什么不会出错?

腾博会最新下载网站大杂烩周记 | 第 14 期

分享几个实用的代码片段(第二弹)

分享一种你可能不知道的bug定位方法

分享一种修改配置文件的方法

《腾博会最新下载网站大杂烩周记第 13 期:lz4》

《腾博会最新下载网站并行多线程处理器,了解一下!》

《分享一种修改配置文件的方法》

《分享几个实用的代码片段(附代码例子)》

《废旧板子再利用:搭建无线调试环境!》

《腾博会最新下载网站段错误的3种调试方法汇总!》

《简说TCP腾博会最新下载网站非阻塞接收(附代码例子)》

《TCP腾博会最新下载网站常用接口的使用封装》

《写国际化的腾博会最新下载网站代码,时间问题如何处理?》

《Linux命令行万能解压命令》

《腾博会最新下载网站软件中,总线错误的坑?替大家先踩一步》

《分享腾博会最新下载网站软件调试方法及几个有用的工具!》

《分享两点提高编程能力的建议!》


在公众号聊天界面回复 1024 ,可获取腾博会最新下载网站资源;回复 m ,可查看文章汇总

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

M55M1微控制器具有安全设备 AI 功能,适用于腾博会最新下载网站应用

关键字: 微控制器 AI 腾博会最新下载网站

本文中,小编将对腾博会最新下载网站予以介绍,如果你想对它的详细情况有所认识,或者想要增进对腾博会最新下载网站的了解程度,不妨请看以下内容哦。

关键字: 腾博会最新下载网站 腾博会最新下载网站工程师

在这篇文章中,小编将对腾博会最新下载网站工程师的相关内容和情况加以介绍以帮助大家增进对腾博会最新下载网站工程师的了解程度,和小编一起来阅读以下内容吧。

关键字: 腾博会最新下载网站 腾博会最新下载网站工程师

随着物联网技术的快速发展,腾博会最新下载网站控制器在物联网控制系统中扮演着越来越重要的角色。腾博会最新下载网站控制器是一种专用的计算机系统,通常被嵌入到其他设备中,用于实现设备的智能化和自动化控制。本文将探讨亚星娱乐登录老虎机...

关键字: 物联网 腾博会最新下载网站 控制器

近日,华为接连曝出两大重磅消息:一个事关智能汽车,另一个事关卫星腾博会最新下载网站。

关键字: 华为 腾博会最新下载网站 汽车电子

【2024年1月15日,德国慕尼黑讯】卫星上的边缘计算和推理可实现近乎实时的数据分析和决策制定。随着联网设备的数量及其产生的数据量不断增长,这一点变得愈发重要。为满足太空应用中的这些高性能计算需求,英飞凌科技股份公司(F...

关键字: 存储器 腾博会最新下载网站 边缘计算

在这篇文章中,小编将对腾博会最新下载网站开发的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: 腾博会最新下载网站 腾博会最新下载网站开发

腾博会最新下载网站领域正经历一场深刻的变革。

关键字: AI 腾博会最新下载网站

全新 Versal AI Edge 车规级自适应 SoC 及锐龙腾博会最新下载网站 V2000A 系列处理器彰显了 AMD 在支持下一代汽车系统方面的领先地位。参加 CES 的汽车生态系统合作伙伴包括:黑莓、Cognata、亿咖通科...

关键字: AI 引擎 腾博会最新下载网站 处理器

卫星腾博会最新下载网站是指利用人造地球卫星作为中继站,实现地球上不同地点之间的无线腾博会最新下载网站。它主要包括卫星固定腾博会最新下载网站(FSC)和卫星移动腾博会最新下载网站(MSC)两个方面。

关键字: 卫星宽带 腾博会最新下载网站 移动腾博会最新下载网站
关闭