DBC文件是一種集成了CAN和CANFD報(bào)文格式幀的數(shù)據(jù)庫(kù),和整車(chē)廠合作開(kāi)發(fā)項(xiàng)目時(shí),必定會(huì)接觸到DBC文件,解析DBC文件是考驗(yàn)一個(gè)汽車(chē)診斷工程師的終極水平題目?。。。。?!
手頭上剛好有和寶馬公司合住的一個(gè)項(xiàng)目,寶馬釋放了一個(gè)DBC文件,本期就來(lái)用RA8D1進(jìn)行DBC解析,破解整車(chē)廠通信奧秘!
板子連接,如下圖所示
這里我是用了Vector公司的CANoe工具,通過(guò)連接到RA8D1開(kāi)發(fā)板上的CANFD接口,只需要連接CAN_H和CAN_L就可以通信了。
1。打開(kāi)RA Smart 配置軟件進(jìn)行CANFD配置
時(shí)鐘配置如下
2。配置CANFD時(shí)鐘
選擇40MHZ
3。配置CANFD模塊
這里有兩路CANFD,只需要選擇其一即可
4。以CANFD1為列子
至此配置完畢
生成代碼,打開(kāi)KEIL工程
5。按照如下代碼封裝號(hào)CANFD1接口
#ifndef __BSP_CANFD_1_H
#define__BSP_CANFD_1_H
#include \"hal_data.h\"
#include \"stdio.h\"
// CANFD1模塊的調(diào)試信息輸出控制
#define CANFD1_DEBUG1
#if (1 == CANFD1_DEBUG)
#define CANFD1_MSG_PRINTF(format, ...)printf(\"[CANFD1 Operation] \"format\"\\\\r\\\\n\", ##VA_ARGS)
#else
#define CANFD1_MSG_PRINTF(format, ...)
#endif
#define WAIT_TIME(0xFFFF)
void CANFD1_Init(void);
void CAN1_Operation(void);
void CANFD1_Operation(void);
void CANFD_SendMessage(uint32_t U32_transmitCANid, uint8_t *U8_dataarr, uint8_t U8_DLC);
void CAN_SendMessage(uint32_t U32_transmitCANid, uint8_t *U8_dataarr, uint8_t U8_DLC);
#endif
#include \"bsp_canfd1.h\"
/* CAN 初始化函數(shù) */
void CANFD1_Init(void)
{
fsp_err_t err = R_CANFD_Open(&g_canfd1_ctrl, &g_canfd1_cfg);
assert(FSP_SUCCESS == err);
}
/* CANFD Channel 1 Acceptance Filter List (AFL) rule array /
const canfd_afl_entry_t p_canfd1_afl[CANFD_CFG_AFL_CH1_RULE_NUM] =
{
{
.id =
{
/ 指定要接受的ID、ID類(lèi)型和幀類(lèi)型。 */
.id= 0xfff,
.frame_type = CAN_FRAME_TYPE_DATA,
.id_mode = CAN_ID_MODE_STANDARD
},
.destination =
{
/* 如果啟用了DLC檢查,則任何短于以下設(shè)置的消息都將被拒絕。 */
.minimum_dlc = CANFD_MINIMUM_DLC_0,
/* 也可以指定接收消息緩沖區(qū)(RX MB)來(lái)存儲(chǔ)接受的幀。
* RX MB沒(méi)有中斷或重寫(xiě)保護(hù),必須使用R_CANFD_INFO Get和R_CANFD_READ進(jìn)行檢查。 */
.rx_buffer= CANFD_RX_MB_0,
/* 指定要將篩選的消息發(fā)送到的FIFO。多個(gè)FIFO可以一起進(jìn)行或運(yùn)算。 */
.fifo_select_flags = CANFD_RX_FIFO_0
}
},
};
/* CAN 幀 */
can_frame_t canfd1_tx_frame; //CAN transmit frame
can_frame_t canfd1_rx_frame;
/* 保存幀接收狀態(tài)信息 */
can_info_t canfd1_rx_info;
/* 要在回調(diào)函數(shù)中設(shè)置的標(biāo)志 */
volatile bool canfd1_tx_complete_flag = false;
volatile bool canfd1_rx_complete_flag = false;
volatile bool canfd1_err_status_flag = false;
volatile canfd_error_t canfd1_err_status = (canfd_error_t) 0;
static uint32_t CANFD_LengthToDLC(uint8_t length);
/* CANFD1 中斷回調(diào)函數(shù) */
void canfd1_callback(can_callback_args_t * p_args)
{
switch (p_args->event)
{
case CAN_EVENT_RX_COMPLETE://接收完成中斷
{
canfd1_rx_complete_flag = true; //canfd1接收到數(shù)據(jù)
/* 讀取接收幀 */
memcpy(&canfd1_rx_frame, &(p_args->frame), sizeof(can_frame_t));
break;
}
case CAN_EVENT_TX_COMPLETE://傳輸完成中斷
{
canfd1_tx_complete_flag = true; //canfd0數(shù)據(jù)發(fā)送完成
break;
}
case CAN_EVENT_ERR_WARNING: //error warning event
case CAN_EVENT_ERR_PASSIVE: //error passive event
case CAN_EVENT_ERR_BUS_OFF: //error Bus Off event
case CAN_EVENT_BUS_RECOVERY://Bus recovery error event
case CAN_EVENT_MAILBOX_MESSAGE_LOST: //overwrite/overrun error event
case CAN_EVENT_ERR_BUS_LOCK://Bus lock detected (32 consecutive dominant bits).
case CAN_EVENT_ERR_CHANNEL: //Channel error has occurred.
case CAN_EVENT_TX_ABORTED://Transmit abort event.
case CAN_EVENT_ERR_GLOBAL://Global error has occurred.
case CAN_EVENT_TX_FIFO_EMPTY://Transmit FIFO is empty.
{
canfd1_err_status_flag = true;//設(shè)置標(biāo)志位
/* 獲取錯(cuò)誤狀態(tài) */
canfd1_err_status = (canfd_error_t) p_args->error;
break;
}
default:
{
break;
}
}
}
static uint32_t CANFD_LengthToDLC(uint8_t length)
{
uint32_t dlc_result;
if (length <= 8)
{
// 對(duì)于0-8字節(jié),DLC直接等于長(zhǎng)度值,位移到正確位置
dlc_result = ((uint32_t)length);
}
else if (length <= 12)
{
dlc_result = CANFD_MINIMUM_DLC_12;
}
else if (length <= 16)
{
dlc_result = CANFD_MINIMUM_DLC_16;
}
else if (length <= 20)
{
dlc_result = CANFD_MINIMUM_DLC_20;
}
else if (length <= 24)
{
dlc_result = CANFD_MINIMUM_DLC_24;
}
else if (length <= 32)
{
dlc_result = CANFD_MINIMUM_DLC_32;
}
else if (length <= 48)
{
dlc_result = CANFD_MINIMUM_DLC_48;
}
else
{
dlc_result = CANFD_MINIMUM_DLC_64;
}
// 精簡(jiǎn)調(diào)試輸出 - 減少堆棧使用
// 移除調(diào)試輸出避免堆棧問(wèn)題
return dlc_result;
}
/* Transmit a CAN message. */
void CAN_SendMessage(uint32_t U32_transmitCANid, uint8_t *U8_dataarr, uint8_t U8_DLC)
{
fsp_err_t err = FSP_SUCCESS;
uint32_t time_out = WAIT_TIME;
/* 更新傳輸幀的參數(shù) */
canfd1_tx_frame.id = U32_transmitCANid;
canfd1_tx_frame.id_mode = CAN_ID_MODE_STANDARD;
canfd1_tx_frame.type = CAN_FRAME_TYPE_DATA;
canfd1_tx_frame.data_length_code = U8_DLC;
canfd1_tx_frame.options = 0;
/* 填充將要傳輸?shù)膸瑪?shù)據(jù) */
memcpy(canfd1_tx_frame.data, U8_dataarr, canfd1_tx_frame.data_length_code);
CANFD1_MSG_PRINTF(\"CANID: 0x%x 傳輸CAN數(shù)據(jù)\",canfd1_tx_frame.id);
/* 通過(guò) mail box #0 傳輸數(shù)據(jù) */
err = g_canfd_on_canfd.write(&g_canfd1_ctrl, CAN_MAILBOX_NUMBER_0, &canfd1_tx_frame);
assert(FSP_SUCCESS == err);
}
/* Transmit a CANFD message. */
void CANFD_SendMessage(uint32_t U32_transmitCANid, uint8_t *U8_dataarr, uint8_t U8_DLC)
{
fsp_err_t err = FSP_SUCCESS;
uint32_t time_out = WAIT_TIME;
/* 更新 FD 幀的參數(shù) */
canfd1_tx_frame.id = U32_transmitCANid;
canfd1_tx_frame.id_mode = CAN_ID_MODE_STANDARD;
canfd1_tx_frame.type = CAN_FRAME_TYPE_DATA;
canfd1_tx_frame.data_length_code = 64;//CANFD_LengthToDLC(U8_DLC);
canfd1_tx_frame.options = CANFD_FRAME_OPTION_FD | CANFD_FRAME_OPTION_BRS;
/* 填充將要在 FD 幀中發(fā)送出去的幀數(shù)據(jù) */
for( uint16_t j = 0; j < canfd1_tx_frame.data_length_code; j++)
{
canfd1_tx_frame.data[j] = (uint8_t) U8_dataarr[j];
}
/* 通過(guò) mail box #0 傳輸數(shù)據(jù) */
err = R_CANFD_Write(&g_canfd1_ctrl, CAN_MAILBOX_NUMBER_0, &canfd1_tx_frame);
assert(FSP_SUCCESS == err)
}
6。解析DBC文件
首先讓大家見(jiàn)識(shí)下DBC到底長(zhǎng)啥樣
用軟件打開(kāi)
上面就是DBC文件了
這些就是它包含的CAN報(bào)文
7。在主函數(shù)中解析DBC文件
#include \"hal_data.h\"
#include \"bsp_debug_uart.h\"
#include \"bsp_canfd1.h\"
#include \"CANFD_A2B.h\"
extern volatile bool uart_send_complete_flag;
//CAN
extern volatile bool canfd1_rx_complete_flag;
extern can_frame_t canfd1_rx_frame;
extern can_frame_t canfd1_tx_frame;
FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER
static const uint8_ttxData[10] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x70, 0x80,0xff,0xaa};
/*******************************************************************************************************************//**
main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.This function
is called by main() when no RTOS is used.
*********************************************************************************************************************/
void hal_entry(void)
{
/ TODO: add your own code here */
Debug_UART9_Init();
CANFD1_Init();
printf(\"RA8D1 CANFD解析DBC文件報(bào)文信息\\\\r\\\\n\");
while(1)
{
//R_BSP_SoftwareDelay(100, BSP_DELAY_UNITS_MILLISECONDS);
//CAN_SendMessage(0x112, txData, 2);
//CANFD_SendMessage(0x223, txData,10);
if (true == canfd1_rx_complete_flag)
{
canfd1_rx_complete_flag = false;
#if 0
printf(\"Canfd6 Last Receive Pdu: \\\\r\\\\n\");
printf(\"ID: 0x%08x \\\\r\\\\n\", canfd1_rx_frame.id);
printf(\"DataLength: %d \\\\r\\\\n\", canfd1_rx_frame.data_length_code);
printf(\"Data: \\\\r\\\\n\");
for (uint32_t i = 1; i <= canfd1_rx_frame.data_length_code; i++)
{
printf(\"%d\", canfd1_rx_frame.data[i - 1]);
if (i % 8 == 0)
{
printf(\"\\\\r\\\\n\");
}
else
{
}
}
printf(\"\\\\r\\\\n\");
#endif
if (canfd1_rx_frame.id == CANFD_A2_B_EAMP_1_FRAME_ID)//0x461
{
canfd_a2_b_eamp_1_unpack(&EAMP_1,canfd1_rx_frame.data, canfd1_rx_frame.data_length_code);
printf(\"STAT_AMPNaviVolume:0x%x \\\\r\\\\n\",EAMP_1.stat_amp_navi_volume);//反饋-導(dǎo)航音量設(shè)定
printf(\"STAT_AMPVRVolume:0x%x \\\\r\\\\n\",EAMP_1.stat_ampvr_volume);//反饋語(yǔ)音音量設(shè)定
printf(\"STAT_AMPKeyTone: 0x%x \\\\r\\\\n\",EAMP_1.stat_amp_key_tone);//反饋按鍵音開(kāi)關(guān)
printf(\"STAT_AMPMediaVolume: 0x%x \\\\r\\\\n\",EAMP_1.stat_amp_media_volume);//反饋媒體音量設(shè)定
printf(\"STAT_AMPPhoneVolume: 0x%x \\\\r\\\\n\",EAMP_1.stat_amp_phone_volume);//反饋電話音量設(shè)定
printf(\"STAT_AMPSoundFocus:0x%x \\\\r\\\\n\",EAMP_1.stat_amp_sound_focus);//反饋音場(chǎng)(最佳聽(tīng)音位)設(shè)定
printf(\"STAT_AMPSoundEffect: 0x%x \\\\r\\\\n\",EAMP_1.stat_amp_sound_effect);//反饋-音效設(shè)定(預(yù)設(shè)EQ)
printf(\"STAT_AMPSoundEffectBass: 0x%x \\\\r\\\\n\",EAMP_1.stat_amp_sound_effect_bass);//反饋-低音設(shè)定(用戶自定義EQ下)
printf(\"STAT_AMPSoundEffectMidrange: 0x%x \\\\r\\\\n\",EAMP_1.stat_amp_sound_effect_midrange);//反饋-中音設(shè)定(用戶自定義EQ下)
printf(\"STAT_AMPSoundEffectTreble:0x%x \\\\r\\\\n\",EAMP_1.stat_amp_sound_effect_treble);//反饋-高音設(shè)定(用戶自定義EQ下)
printf(\"STAT_AMPSoundFieldBalance:0x%x \\\\r\\\\n\",EAMP_1.stat_amp_sound_field_balance);//反饋-Balance設(shè)定(用戶自定義聲場(chǎng))
printf(\"STAT_AMPSoundFieldFader: 0x%x \\\\r\\\\n\",EAMP_1.stat_amp_sound_field_fader);//反饋-反饋-Fader設(shè)定(用戶自定義聲場(chǎng))
printf(\"STAT_REQ_AMPA2BMediaSound:0x%x \\\\r\\\\n\",EAMP_1.stat_req_ampa2_b_media_sound);//媒體音源需求狀態(tài)
printf(\"STAT_REQ_AMPA2BNaviSound:0x%x \\\\r\\\\n\",EAMP_1.stat_req_ampa2_b_navi_sound); //導(dǎo)航音源需求狀態(tài)
printf(\"STAT_REQ_AMPA2BVRSound:0x%x \\\\r\\\\n\",EAMP_1.stat_req_ampa2_bvr_sound);//VR/Siri音源需求狀態(tài)
printf(\"STAT_REQ_AMPA2BTTSSound: 0x%x \\\\r\\\\n\",EAMP_1.stat_req_ampa2_btts_sound);//TTS音源需求狀態(tài)
printf(\"STAT_REQ_AMPA2BPhoneSound:0x%x \\\\r\\\\n\",EAMP_1.stat_req_ampa2_b_phone_sound);//電話/Tbox音源需求狀態(tài)
printf(\"STAT_REQ_AMPAlarm:0x%x \\\\r\\\\n\",EAMP_1.stat_req_amp_alarm);//警報(bào)音需求狀態(tài)
}
else if (canfd1_rx_frame.id == CANFD_A2_B_EAMP_2_FRAME_ID)//0x474
{
canfd_a2_b_eamp_2_unpack(&EAMP_2,canfd1_rx_frame.data, canfd1_rx_frame.data_length_code);
printf(\"STAT_AMPMediaDuck:0x%x \\\\r\\\\n\",EAMP_2.stat_amp_media_duck); //發(fā)送媒體降音反饋給主機(jī)
printf(\"STAT_AMPSpeedVolume: 0x%x \\\\r\\\\n\",EAMP_2.stat_amp_speed_volume);//反饋-隨速補(bǔ)償?shù)燃?jí)設(shè)定
printf(\"STAT_AMPMute:0x%x \\\\r\\\\n\",EAMP_2.stat_amp_mute);//反饋-媒體音量開(kāi)關(guān)
printf(\"STAT_AMPRestoreDefaults: 0x%x \\\\r\\\\n\",EAMP_2.stat_amp_restore_defaults);//恢復(fù)默認(rèn)音頻參數(shù)設(shè)置狀態(tài)
printf(\"STAT_AMPAlarmVolume: 0x%x \\\\r\\\\n\",EAMP_2.stat_amp_alarm_volume);//警報(bào)音量值狀態(tài)
printf(\"STAT_Headrest_Mode:0x%x \\\\r\\\\n\",EAMP_2.stat_headrest_mode);//頭枕模式狀態(tài)
printf(\"STAT_AMPSoundEffectMegaBass: 0x%x \\\\r\\\\n\",EAMP_2.stat_amp_sound_effect_mega_bass); //重低音設(shè)定值反饋
printf(\"STAT_AMPSoundEffectMidBass:0x%x \\\\r\\\\n\",EAMP_2.stat_amp_sound_effect_mid_bass);//中低音設(shè)定值反饋
printf(\"STAT_AMPSoundEffectMidTreble:0x%x \\\\r\\\\n\",EAMP_2.stat_amp_sound_effect_mid_treble);//中高音設(shè)定值反饋
printf(\"STAT_VirtualSbwfrOnOff:0x%x \\\\r\\\\n\",EAMP_2.stat_virtual_sbwfr_on_off);//虛擬現(xiàn)場(chǎng)設(shè)定狀態(tài)
printf(\"STAT_SurndFnOnOff:0x%x \\\\r\\\\n\",EAMP_2.stat_surnd_fn_on_off);//3D環(huán)繞設(shè)定狀態(tài)
printf(\"STAT_AMPBackgroundVolume:0x%x \\\\r\\\\n\",EAMP_2.stat_amp_background_volume);//背景音(迎賓音)音量值狀態(tài)
printf(\"STAT_AMPSoundBypass: 0x%x \\\\r\\\\n\",EAMP_2.stat_amp_sound_bypass);//第三方APP打開(kāi)時(shí),外置功放做音效bypass處理狀態(tài)
printf(\"STAT_AMPPwrRdySts:0x%x \\\\r\\\\n\",EAMP_2.stat_amp_pwr_rdy_sts);//A2B交互成功并支持出聲后,反饋Ready
printf(\"STAT_AMPVersion: 0x%x \\\\r\\\\n\",EAMP_2.stat_amp_version);//版本號(hào)
}
}
#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}
/*******************************************************************************************************************//**
This function is called at various points during the startup process.This implementation uses the event that is
called right before main() to set up the pins.
@param[in]event Where at in the start up process the code is currently at
**********************************************************************************************************************/
void R_BSP_WarmStart (bsp_warm_start_event_t event)
{
if (BSP_WARM_START_RESET == event)
{
#if BSP_FEATURE_FLASH_LP_VERSION != 0
/* Enable reading from data flash. */
R_FACI_LP->DFLCTL = 1U;
/* Would normally have to wait tDSTOP(6us) for data flash recovery. Placing the enable here, before clock and
* C runtime initialization, should negate the need for a delay since the initialization will typically take more than 6us. */
#endif
}
if (BSP_WARM_START_POST_C == event)
{
/* C runtime environment and system clocks are setup. */
/* Configure pins. */
R_IOPORT_Open(&g_ioport_ctrl, &IOPORT_CFG_NAME);
}
}
#if BSP_TZ_SECURE_BUILD
FSP_CPP_HEADER
BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ();
/* Trustzone Secure Projects require at least one nonsecure callable function in order to build (Remove this if it is not required to build). */
BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ()
{
}
FSP_CPP_FOOTER
#endif
8。打開(kāi)Vector的CANoe軟件上位機(jī)
加載DBC文件進(jìn)行發(fā)送
這里,我們發(fā)送報(bào)文0X461
每間隔500ms周期發(fā)送一次
打開(kāi)串口助手
我們可以修改其中的
把它改為1
至此,DBC解析正確完成?。。。。?!
破解了整車(chē)廠的奧秘——————
發(fā)表于 10-18 18:12
近日,由汽車(chē)觀察聯(lián)合中國(guó)國(guó)際貿(mào)促會(huì)汽車(chē)行業(yè)委員會(huì)、中國(guó)汽車(chē)芯片產(chǎn)業(yè)創(chuàng)新戰(zhàn)略聯(lián)盟主辦的2025智輅獎(jiǎng)·中國(guó)汽車(chē)智能創(chuàng)新技術(shù)評(píng)選頒獎(jiǎng)典禮落幕。博泰車(chē)聯(lián)憑借第五代驍龍座艙平臺(tái)(QAM8397P),從100家科技企業(yè)中脫穎而出,獲2025智輅獎(jiǎng)「智能座艙類(lèi)」優(yōu)秀獎(jiǎng)。
發(fā)表于 10-18 17:26
?49次閱讀
2025年10月28日至31日,亞洲物流行業(yè)盛會(huì)——CeMAT ASIA 2025 亞洲國(guó)際物流技術(shù)與運(yùn)輸系統(tǒng)展覽會(huì),即將在上海新國(guó)際博覽中心再度啟航!
發(fā)表于 10-18 17:22
?307次閱讀
氣體壓力傳感器是一種用于測(cè)量氣體壓力的裝置,其精度直接影響到工業(yè)自動(dòng)化控制的效果。在生產(chǎn)過(guò)程中,氣體壓力傳感器的精度越高,控制效果越好,生產(chǎn)效率也越高。因此,提高氣體壓力傳感器的精度至關(guān)重要。
發(fā)表于 10-18 17:21
?152次閱讀
新手小白,想請(qǐng)懂的幫忙看一看這樣設(shè)計(jì)升壓電路可以嗎,有沒(méi)有什么問(wèn)題,電路有一個(gè)VIN(5V),兩個(gè)VOUT(一個(gè)還是輸出5V,另一個(gè)輸出9V,同時(shí)輸出使用),升壓用的MT3608和SS34A,接口都是XH2.54 2P,謝謝謝謝。
發(fā)表于 10-18 17:06
文章對(duì)模擬信號(hào)的有關(guān)內(nèi)容做了簡(jiǎn)單說(shuō)明。
發(fā)表于 10-18 16:47
?85次閱讀
“一臺(tái)設(shè)備配一塊電表” 的傳統(tǒng)模式,正在拖垮能源管理效率。某數(shù)據(jù)中心運(yùn)維負(fù)責(zé)人算了筆賬:20 個(gè)服務(wù)器機(jī)柜需裝 20 臺(tái)電表,不僅占用配電柜 50% 以上空間,線纜成本更是居高不下。更頭疼的是,人工抄表慢、數(shù)據(jù)分散,等到發(fā)現(xiàn)能耗異常,早已造成浪費(fèi)。
發(fā)表于 10-18 16:44
?51次閱讀
10月15-17日,以“芯啟未來(lái),智創(chuàng)生態(tài)”為主題的灣芯展在深圳盛大舉行,本次博覽會(huì)旨在匯聚全球半導(dǎo)體產(chǎn)業(yè)鏈頭部企業(yè)與創(chuàng)新力量,共探行業(yè)趨勢(shì)與方向。燦芯半導(dǎo)體(燦芯股份,688691)攜多款定制芯片及自研IP亮相,與行業(yè)伙伴共同探討技術(shù)突破與市場(chǎng)機(jī)遇。
發(fā)表于 10-18 16:36
?103次閱讀
2025年金秋十月至初冬時(shí)節(jié),全球低功耗無(wú)線連接解決方案領(lǐng)軍企業(yè)Nordic Semiconductor將開(kāi)啟覆蓋中國(guó)八大核心城市的技術(shù)研討會(huì)。
發(fā)表于 10-18 16:32
?333次閱讀
2025年10月16日,2025交通毫米波雷達(dá)產(chǎn)業(yè)發(fā)展大會(huì)在杭州正式啟幕。南京慧爾視智能科技有限公司作為智能交通感知領(lǐng)域的技術(shù)先行者,受邀參與此次大會(huì),與來(lái)自全國(guó)各地的專(zhuān)家學(xué)者、企業(yè)代表聚焦交通毫米波雷達(dá)技術(shù)發(fā)展現(xiàn)狀,共同探討92-94GHz雷達(dá)未來(lái)趨勢(shì)、應(yīng)用案例以及面臨的挑戰(zhàn)與解決方案。
發(fā)表于 10-18 16:30
?317次閱讀
10 月 15 日 - 19 日,第138屆中國(guó)進(jìn)出口商品交易會(huì)(以下簡(jiǎn)稱(chēng):“廣交會(huì)”)在廣州盛大舉辦。作為連接國(guó)內(nèi)外市場(chǎng)、促進(jìn)國(guó)際貿(mào)易合作的核心平臺(tái),本屆廣交會(huì)吸引了全球眾多優(yōu)質(zhì)企業(yè)參與。
發(fā)表于 10-18 16:00
?348次閱讀
10 月 13 日 - 16 日,第 45 屆香港秋季電子產(chǎn)品展(以下簡(jiǎn)稱(chēng) “2025 香港秋季電子展”)在香港會(huì)議展覽中心舉辦。作為洞察產(chǎn)業(yè)趨勢(shì)、鏈接全球市場(chǎng)的全球電子行業(yè)年度焦點(diǎn)盛會(huì),本屆展會(huì)匯聚前沿科技與創(chuàng)新產(chǎn)品,吸引了全球上千家領(lǐng)先企業(yè)及專(zhuān)業(yè)買(mǎi)家參加。
發(fā)表于 10-18 15:58
?104次閱讀
10月15日,中軟國(guó)際副總裁、AIGC研究院院長(zhǎng)萬(wàn)如意在第27屆中國(guó)國(guó)際軟件博覽會(huì)上,以“大模型應(yīng)用落地最后一公里的挑戰(zhàn)和應(yīng)對(duì)”為主題分享實(shí)踐成果。結(jié)合中軟國(guó)際近兩年參與的300余個(gè)大模型項(xiàng)目落地經(jīng)驗(yàn),他指出企業(yè)AI落地難的核心癥結(jié)在數(shù)據(jù),進(jìn)而詳解以“本體”破解困局的路徑。
發(fā)表于 10-18 15:54
?319次閱讀
評(píng)論