急求一个ITextCtl的例子!!!!!!!!!!!!!

cancer0713 2008-05-22 11:19:01
刚开始接触BREW,想作一个简单的练习,界面:有两个输入框,用上下键可以进行切换;一个SAVE键,用来保存在输入框中输入的内容。谁能提供点关于如何创建ITEXTCTL的例子啊?API上面看了半天也没看懂,实在是不好意思啊!
...全文
1511 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
visual4825 2009-03-21
  • 打赏
  • 举报
回复
>还有个问题。是关于如何进行文件操作的。比如我分别在两个输入框中输入了信息。
>要对其进行保存,使下次进入时在输入框中显示的是保存的内容!请问该如何处理啊?

写NV
韩明君 2009-03-05
  • 打赏
  • 举报
回复
学习学习!!
yuhan20030307 2008-07-29
  • 打赏
  • 举报
回复
学习中
炽天使_1985 2008-07-21
  • 打赏
  • 举报
回复

TextDemo_res.h 文件


#ifndef TEXTDEMO_RES_H
#define TEXTDEMO_RES_H

// WARNING: DO NOT MODIFY THIS FILE
// AUTO-GENERATED BY BREW Resource Editor

#define TEXTDEMO_RES_FILE "TextDemo.bar"

#define IDS_SOFT_1 1
#define IDS_SOFT_2 2
#define IDS_TEXT_TITLE 4
#define YP 5001


#endif // TEXTDEMO_RES_H
....................................................................
TextDemo.h 头文件

#ifndef _TEXT_DEMO_H_
#define _TEXT_DEMO_H_

typedef struct _TextDemo
{
AEEApplet a;
ITextCtl *pText;
}TextDemo;

#endif






.............................................................................................


#include "AEEModGen.h" // Module interface definitions
#include "AEEAppGen.h" // Applet interface definitions
#include "AEEShell.h" // Shell interface definitions
#include "AEEText.h"
#include "TextDemo.bid"
#include "TextDemo.h"
#include "TextDemo_res.h"

#define MAX_BUF_SIZE 15

static boolean TextDemo_HandleEvent(IApplet * pi, AEEEvent eCode,
uint16 wParam, uint32 dwParam);
static boolean TextDemo_InitAppData(TextDemo *pThis);
static void TextDemo_FreeAppData(TextDemo *pThis);

int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)
{
*ppObj = NULL;

if(ClsId == AEECLSID_TEXTDEMO){
if(AEEApplet_New(sizeof(TextDemo), ClsId, pIShell,po,(IApplet**)ppObj,
(AEEHANDLER)TextDemo_HandleEvent,(PFNFREEAPPDATA)TextDemo_FreeAppData)
== TRUE)
{
// Add your code here .....
if( TextDemo_InitAppData((TextDemo *)(*ppObj)) )
{
return (AEE_SUCCESS);
}
else
{
IAPPLET_Release((IApplet *)(*ppObj));
return (EFAILED);
}
}
}
return (EFAILED);
}


static boolean TextDemo_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
TextDemo *pThis = (TextDemo *)pi;
AEERect rect = {0, 0, 100, 50};
AECHAR buffer[MAX_BUF_SIZE+1];
switch (eCode)
{
case EVT_APP_START:

// Add your code here .....
ISHELL_CreateInstance(pThis->a.m_pIShell, AEECLSID_TEXTCTL, (void **)&pThis->pText);
ITEXTCTL_SetProperties(pThis->pText, TP_FRAME);
ITEXTCTL_SetTitle(pThis->pText, TEXTDEMO_RES_FILE, IDS_TEXT_TITLE, NULL);
ITEXTCTL_SetRect(pThis->pText, &rect);
ITEXTCTL_SetMaxSize(pThis->pText, MAX_BUF_SIZE);
ITEXTCTL_SetInputMode(pThis->pText, AEE_TM_NUMBERS);
ITEXTCTL_SetActive(pThis->pText, TRUE);
return(TRUE);
case EVT_KEY:
if(AVK_SELECT == wParam)
{
ITEXTCTL_GetText(pThis->pText, buffer, MAX_BUF_SIZE);
IDISPLAY_DrawText(pThis->a.m_pIDisplay, AEE_FONT_NORMAL, buffer, -1, 0, 0, NULL, IDF_ALIGN_CENTER|IDF_ALIGN_MIDDLE);
IDISPLAY_Update(pThis->a.m_pIDisplay);
return TRUE;
}
if(pThis->pText)
{
ITEXTCTL_HandleEvent(pThis->pText, eCode, wParam, dwParam);
return TRUE;
}
return FALSE;
case EVT_APP_STOP:

// Add your code here .....

return TRUE;
case EVT_APP_SUSPEND:
if(pThis->pText)
{
ITEXTCTL_SetActive(pThis->pText, FALSE);
}
return TRUE;
case EVT_APP_RESUME:
if(pThis->pText)
{
ITEXTCTL_SetActive(pThis->pText, TRUE);
}
return TRUE;
default:
break;
}
return FALSE;
}

static boolean TextDemo_InitAppData(TextDemo *pThis)
{
pThis->pText = NULL;
return TRUE;
}

static void TextDemo_FreeAppData(TextDemo *pThis)
{
if(pThis->pText)
{
ITEXTCTL_Release(pThis->pText);
pThis->pText = NULL;
}
}
Daemon_neu 2008-05-26
  • 打赏
  • 举报
回复
/*===========================================================================

FILE: FileSample.c
===========================================================================*/


/*===============================================================================
INCLUDES AND VARIABLE DEFINITIONS
=============================================================================== */
#include "AEEModGen.h" // Module interface definitions
#include "AEEAppGen.h" // Applet interface definitions
#include "AEEShell.h" // Shell interface definitions
#include "AEEFile.h" // File interface definitions

#include "filesample.bid"

/*-------------------------------------------------------------------
Function Prototypes
-------------------------------------------------------------------*/
static boolean FileSample_HandleEvent(IApplet * pi, AEEEvent eCode,
uint16 wParam, uint32 dwParam);

/*===============================================================================
FUNCTION DEFINITIONS
=============================================================================== */
static boolean FileSample_TestFun(IShell *pIShell, uint32 score);

int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)
{
*ppObj = NULL;

if(ClsId == AEECLSID_FILESAMPLE){
if(AEEApplet_New(sizeof(AEEApplet), ClsId, pIShell,po,(IApplet**)ppObj,
(AEEHANDLER)FileSample_HandleEvent,NULL)
== TRUE)
{
// Add your code here .....

return (AEE_SUCCESS);
}
}
return (EFAILED);
}

static boolean FileSample_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
AECHAR hints1[18] = {'P','r','e','s','s',' ','S','E','L',' ','t','o',' ','t','e','s','t','!'};
AECHAR hints2[13] = {'T','e','s','t',' ','S','u','c','c','e','s','s','!'};
AECHAR hints3[12] = {'T','e','s','t',' ','F','a','i','l','e','d','!'};

AEEApplet *pAEEApplet = (AEEApplet *)pi;
IDisplay *pIDisplay = pAEEApplet->m_pIDisplay;
IShell *pIShell = pAEEApplet->m_pIShell;

switch (eCode)
{
case EVT_APP_START:
IDISPLAY_ClearScreen(pIDisplay);
IDISPLAY_DrawText(pIDisplay, AEE_FONT_NORMAL, hints1,
18, 0, 50, NULL, IDF_ALIGN_CENTER);
IDISPLAY_Update(pIDisplay);
// Add your code here .....

return(TRUE);
case EVT_APP_STOP:

// Add your code here .....

return TRUE;
case EVT_KEY:
switch(wParam)
{
case AVK_SELECT:
if(FileSample_TestFun(pIShell, 50) == SUCCESS){
IDISPLAY_ClearScreen(pIDisplay);
IDISPLAY_DrawText(pIDisplay, AEE_FONT_NORMAL, hints2,
13, 0, 50, NULL, IDF_ALIGN_CENTER);
IDISPLAY_Update(pIDisplay);
}
else{
IDISPLAY_ClearScreen(pIDisplay);
IDISPLAY_DrawText(pIDisplay, AEE_FONT_NORMAL, hints3,
12, 0, 50, NULL, IDF_ALIGN_CENTER);
IDISPLAY_Update(pIDisplay);
}
return TRUE;
default:
break;
}
default:
break;
}
return FALSE;
}


static boolean FileSample_TestFun(IShell *pIShell, uint32 score)
{

const char *pszfile = "record.dat";


uint32 oldscore = 0;


IFileMgr *pIFileMgr = NULL;


IFile *pIFile = NULL;
int i;


if(ISHELL_CreateInstance(pIShell, AEECLSID_FILEMGR, (void **)&pIFileMgr) != SUCCESS){
return EFAILED;
}


if(IFILEMGR_Test(pIFileMgr, pszfile) == SUCCESS){

if((pIFile = IFILEMGR_OpenFile(pIFileMgr, pszfile, _OFM_READWRITE)) == NULL){
return EFAILED;
}

i= IFILE_Seek(pIFile, _SEEK_START, 0);
i=IFILE_Write(pIFile, &score, sizeof(uint32));
i=IFILE_Read(pIFile, &oldscore, sizeof(uint32));


if(score > oldscore){

i= IFILE_Seek(pIFile, _SEEK_START, 0);

i= IFILE_Write(pIFile, &score, sizeof(uint32));
}
}
else{

if((pIFile = IFILEMGR_OpenFile(pIFileMgr, pszfile, _OFM_CREATE)) == NULL){
return EFAILED;
}


i=IFILE_Write(pIFile, &score, sizeof(uint32));
}


IFILE_Release(pIFile);


IFILEMGR_Release(pIFileMgr);

return SUCCESS;
}


cancer0713 2008-05-24
  • 打赏
  • 举报
回复
恩 谢谢 我试试!
还有个问题。是关于如何进行文件操作的。比如我分别在两个输入框中输入了信息。要对其进行保存,使下次进入时在输入框中显示的是保存的内容!请问该如何处理啊?
Daemon_neu 2008-05-24
  • 打赏
  • 举报
回复
基于dialog的文本框输入
试试吧
Daemon_neu 2008-05-24
  • 打赏
  • 举报
回复
static boolean DialogApp_HandleEvent(DialogApp* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{

int nRet;
const AECHAR dlgCaption[]={'D','i','a','l','o','g',' ','D','e','m','o','\0'};
const AECHAR dlgText[] = {'T','h','i','s',' ','a',' ','D','i','a','l','o','g','\0'};
switch (eCode)
{
// App is told it is starting up
case EVT_APP_START:
// Add your code here...

if(SUCCESS == (nRet=ISHELL_CreateDialog(pMe->a.m_pIShell, DIALOG_RES_FILE,
IDD_DEMODLG, NULL)))
return TRUE;
else
return FALSE;

// App is told it is exiting
case EVT_APP_STOP:
// Add your code here...

return(TRUE);


// App is being suspended
case EVT_APP_SUSPEND:
// Add your code here...


// App is being resumed
case EVT_APP_RESUME:
// Add your code here...


// An SMS message has arrived for this app. Message is in the dwParam above as (char *)
// sender simply uses this format "//BREW:ClassId:Message", example //BREW:0x00000001:Hello World
case EVT_APP_MESSAGE:
// Add your code here...



// A key was pressed. Look at the wParam above to see which key was pressed. The key
// codes are in AEEVCodes.h. Example "AVK_1" means that the "1" key was pressed.
case EVT_KEY:
// Add your code here...

switch(eCode)
{
case AVK_SELECT:
ISHELL_EndDialog(pMe->a.m_pIShell);
return TRUE;
}
return FALSE;
case EVT_DIALOG_INIT:
pMe->m_pDialog = (IDialog*)dwParam;
IDIALOG_SetEventHandler(pMe->m_pDialog, (PFNAEEEVENT)dlg_HandleEvent, (void* )pMe);
return(TRUE);

case EVT_DIALOG_START:
case EVT_DIALOG_END:

return TRUE;
case EVT_COMMAND:

return TRUE;

// If nothing fits up to this point then we'll just break out
default:
break;
}

return FALSE;
}


// this function is called when your application is starting up
boolean DialogApp_InitAppData(DialogApp* pMe)
{
// Get the device information for this handset.
// Reference all the data by looking at the pMe->DeviceInfo structure
// Check the API reference guide for all the handy device info you can get
pMe->DeviceInfo.wStructSize = sizeof(pMe->DeviceInfo);
ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&pMe->DeviceInfo);

// Insert your code here for initializing or allocating resources...

pMe->m_nLineHeight = IDISPLAY_GetFontMetrics(pMe->a.m_pIDisplay,
AEE_FONT_NORMAL,
NULL,
NULL);
pMe->m_nLargeLineHeight = IDISPLAY_GetFontMetrics(pMe->a.m_pIDisplay,
AEE_FONT_LARGE,
NULL,
NULL);

pMe->m_nScrHeight = pMe->DeviceInfo.cyScreen;
pMe->m_nScrWidth = pMe->DeviceInfo.cxScreen;

SETAEERECT(&pMe->m_nClntAreaRect,
0,
0,
pMe->DeviceInfo.cxScreen,
pMe->DeviceInfo.cyScreen-pMe->m_nLargeLineHeight);


// if there have been no failures up to this point then return success
return TRUE;
}

// this function is called when your application is exiting
void DialogApp_FreeAppData(DialogApp* pMe)
{
// insert your code here for freeing any resources you have allocated...

// example to use for releasing each interface:
// if ( pMe->pIMenuCtl != NULL ) // check for NULL first
// {
// IMENUCTL_Release(pMe->pIMenuCtl) // release the interface
// pMe->pIMenuCtl = NULL; // set to NULL so no problems trying to free later
// }
//

}
static void dialog_ReleaseObj(void ** ppObj)
{
if ( ppObj && *ppObj )
{
(void) IBASE_Release( ( (IBase *) *ppObj ) );
*ppObj = NULL;
}
}

static boolean dlg_HandleEvent(DialogApp * pMe, AEEEvent evt, uint16 w, uint32 dw)
{
ITextCtl *pITextCtl;
AEERect rc;
AECHAR pBuf[60];
AECHAR *p;
int nFits = 0;
int width = 0;
int height = pMe->m_nLineHeight;
#define EDIT_WIDTH 80
#define EDIT_HEIGHT 80
switch (evt)
{

case EVT_DIALOG_START:

pITextCtl = (ITextCtl *)IDIALOG_GetControl(pMe->m_pDialog,IDC_DLGTEXT);
SETAEERECT( &rc, (pMe->m_nScrWidth-EDIT_WIDTH)/2,(pMe->m_nScrHeight-EDIT_HEIGHT)/2, EDIT_WIDTH, EDIT_HEIGHT);
ITEXTCTL_SetRect(pITextCtl, &rc);
ITEXTCTL_SetMaxSize(pITextCtl, 80);
ITEXTCTL_SetProperties(pITextCtl,TP_FRAME|TP_MULTILINE);
rc.x-=2; rc.dx +=4; rc.y -=2;rc.dy +=6;

IDISPLAY_DrawRect(pMe->a.m_pIDisplay,&rc,kColorClearDialogBox,kColorClearDialogBackground,IDF_RECT_FRAME|IDF_RECT_FILL);

ITEXTCTL_Redraw(pITextCtl);

return TRUE;
case EVT_DIALOG_END:
pITextCtl = (ITextCtl *)IDIALOG_GetControl(pMe->m_pDialog,IDC_DLGTEXT);
ITEXTCTL_GetText(pITextCtl,
pBuf,
sizeof(pBuf));
p = pBuf;
IDISPLAY_ClearScreen(pMe->a.m_pIDisplay);
while(*p)
{
IDISPLAY_MeasureTextEx(pMe->a.m_pIDisplay,
AEE_FONT_NORMAL,
p,
-1,
pMe->m_nScrWidth,
&nFits);


IDISPLAY_DrawText(pMe->a.m_pIDisplay,
AEE_FONT_NORMAL,
p,
nFits,
0,
height,
NULL,
IDF_TEXT_UNDERLINE);
p+=nFits;
height +=pMe->m_nLineHeight;

}
IDISPLAY_Update(pMe->a.m_pIDisplay);

return TRUE;
case EVT_KEY:
return FALSE;
case EVT_COMMAND:
return FALSE;
default:
return FALSE;
}
}
Daemon_neu 2008-05-24
  • 打赏
  • 举报
回复
/*===========================================================================

FILE: DialogApp.c
===========================================================================*/


/*===============================================================================
INCLUDES AND VARIABLE DEFINITIONS
=============================================================================== */
#include "AEEModGen.h" // Module interface definitions
#include "AEEAppGen.h" // Applet interface definitions
#include "AEEShell.h" // Shell interface definitions

#include "DialogApp.bid"
#include "AEEStdLib.h"

#include "aeemenu.h"
#include "dialog_res.brh"
#include "aeetext.h"


#define kColorClearGray 0xC0C0C000
#define kColorClearLightYellow 0xC0FFFF00
#define kColorClearBlack 0x00000000
#define kColorClearDialogBox kColorClearBlack
#define kColorClearDialogBackground kColorClearLightYellow


/*-------------------------------------------------------------------
Applet structure. All variables in here are reference via "pMe->"
-------------------------------------------------------------------*/
// create an applet structure that's passed around. All variables in
// here will be able to be referenced as static.
typedef struct _DialogApp {
AEEApplet a ; // First element of this structure must be AEEApplet
AEEDeviceInfo DeviceInfo; // always have access to the hardware device information

// add your own variables here...
int m_nScrWidth;
int m_nScrHeight;
int m_nLineHeight; // normal font
int m_nLargeLineHeight; //large font
AEERect m_nClntAreaRect;
IDialog *m_pDialog;

} DialogApp;

/*-------------------------------------------------------------------
Function Prototypes
-------------------------------------------------------------------*/
static boolean DialogApp_HandleEvent(DialogApp* pMe, AEEEvent eCode,
uint16 wParam, uint32 dwParam);
boolean DialogApp_InitAppData(DialogApp* pMe);
void DialogApp_FreeAppData(DialogApp* pMe);
static void dialog_ReleaseObj(void ** ppObj);
static boolean dlg_HandleEvent(DialogApp * pMe, AEEEvent evt, uint16 w, uint32 dw);
int AEEClsCreateInstance(AEECLSID ClsId, IShell *pIShell, IModule *po, void **ppObj)
{
*ppObj = NULL;

if( ClsId == AEECLSID_DIALOGAPP )
{
// Create the applet and make room for the applet structure
if( AEEApplet_New(sizeof(DialogApp),
ClsId,
pIShell,
po,
(IApplet**)ppObj,
(AEEHANDLER)DialogApp_HandleEvent,
(PFNFREEAPPDATA)DialogApp_FreeAppData) ) // the FreeAppData function is called after sending EVT_APP_STOP to the HandleEvent function

{
//Initialize applet data, this is called before sending EVT_APP_START
// to the HandleEvent function
if(DialogApp_InitAppData((DialogApp*)*ppObj))
{
//Data initialized successfully
return(AEE_SUCCESS);
}
else
{
//Release the applet. This will free the memory allocated for the applet when
// AEEApplet_New was called.
IAPPLET_Release((IApplet*)*ppObj);
return EFAILED;
}

} // end AEEApplet_New

}

return(EFAILED);
}
打开链接下载源码: https://pan.quark.cn/s/589796089f72 C++课程设计任务列表,涵盖以下内容:1、识别并显示10至99范围内,各位数乘积超过各位数和的数值,例如数字12不满足条件,因为1乘以2小于1加2,故不输出;而数字27满足条件,因为2乘以7大于2加7,因此需要输出该数。2、开发一个功能,用于从用户输入的任意数量实数中找出最大值与最小值:首先要求用户输入一个正整数n,代表数值的个数,随后用户可输入任意n个实数,程序需找出这n个数中的最大值和最小值并将它们展示出来。3、实现两个已排序数组的合并操作:设有数组A和B,且假设这两个数组的元素均已按照降序排列。编写程序将A和B合并成一个新的数组C,并确保C中的元素同样保持降序排列。int A[10]={123, 86,80, 49,33,15,7,0,-1,-3};int B[10]={100,64,51,50,27,19,15,12,5,2};4、设计一个函数,用于计算特定分数序列前n项的总和,该序列为1/2,1/3,1/4,1/5,1/6,1/7,...。要求在主程序中提示用户输入一个整数n,并验证输入的合法性(n需大于1方为有效),若输入合法,则调用求和函数并显示计算结果。5、编写一个程序,计算两个用户输入日期之间的天数差:用户需以year1,month1,day1和year2,month2,day2的格式输入两个日期,程序随后计算这两个日期之间的天数间隔,并将结果输出到屏幕上。要求编制具有如下原型的函数difs2Date:long GetDayDifference(int y1,int m1,int d1,int y2,int m2,int d2);并在主函数中调用此函数,将计...
代码下载地址: https://pan.quark.cn/s/ee8627e4e6d7 ABAP调试器是一种功能强大的工具,可用于在执行期间对ABAP代码进行检验。除了常规的核心功能(例如逐行运行代码以及检验变量、字段符号和引用的值)之外,它还提供了一些辅助性的特性,能够简化并压缩调试会话的时长。并非所有使用者都熟悉这些辅助特性。SAP ABAP调试器是处理和优化ABAP代码开发与维护工作的核心资源,它配备了多样的功能来协助开发人员在运行状态下进行检验和排除故障。此资源着重阐述了ABAP调试器的一些高级特性,涵盖了深入分析调用堆栈、系统级调试、更新会话调试以及提升调试效率的方法。 1. **深入分析调用堆栈**:除了常规的应用程序调试,开发人员有时需要对调用堆栈的内部层级进行深入调试,特别是在错误出现在异步执行的更新处理或系统级程序时。通过启用**系统级调试**,可以访问通常不公开的系统代码,但这也会导致调用堆栈的显著增加,因此需要审慎操作。 2. **系统级调试**:对于不含业务逻辑的系统级程序,开发人员通常无需进行调试。然而,在特定情形下,例如进行错误追踪时,可能需要进入系统代码。借助调试器的“系统调试启用/禁用”选项,可以赋予对系统程序的调试权限。 3. **更新会话调试**:在处理异步更新任务,例如持久化业务数据时,错误可能发生在更新任务内部。激活**更新会话调试**,在更新任务完成后,调试器将自动启动,展示执行路径。比如,在变更成本中心后,通过输入调试指令 "/h" 启动调试,保存后能够看到更新过程中的错误。 4. **分析调用堆栈**:在进行深入调试时,调用堆栈是至关重要的。通过分析调用堆栈,能够定位到引发问题的具体位置,如在VB_V2_NORMAL...
源码链接: https://pan.quark.cn/s/a4b39357ea24 小程序雷达 AI 驱动的小程序生态选型与风险评估工具,把微信小程序开发资源转化为可筛选、可评估、可对比的技术雷达。 线上地址 主站: Vercel: 适合谁 正在做微信小程序技术选型的产品、研发和架构团队。 需要判断 Taro、uni-app、原生小程序、组件库、云开发和 SDK 风险的团队。 需要把历史 awesome 列表转成可筛选、可对比、可验证技术雷达的维护者。 可以做什么 Radar:按推荐状态、风险等级、资源类型、分类和适用场景浏览小程序生态资源。 Quick Search:快速搜索资源并跳转常用页面。 Compare:对比 Taro、uni-app、原生小程序等核心方案。 Advisor:输入选型问题,获得推荐结论、适用/不适用条件、迁移成本、下一步和证据来源。 Doctor:粘贴小程序项目配置,识别框架依赖、过时方案和迁移风险。 Weekly:查看小程序生态周报和近期风险信号。 数据概览 当前数据集中包含 236 个小程序生态资源。 完整资源可在 Radar 页面和导出能力中查看。 核心样例 Taro ★30.6k+ - 使用 React 的方式开发小程序的框架,同时支持生成多端应用 uni-app ★36.1k+ - 使用 Vue 语法开发小程序、H5、App的统一框架 MPX ★2.1k+ - 增强型小程序框架,深度性能优化,支持跨小程序平台开发,完全兼容原生小程序组件 WePY ★21.7k+ - 支持组件化的小程序开发框架 vant-weapp ★12.3k+ - 高颜值、好用、易扩展的微信小程序 UI 库 tdesign-miniprogram ★1.3...

7,646

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧