我正在为不同的硬件(avr,arm7,tms55xx ......)和不同的rtoses(freeRTOS,rtx,dsp/bios)编写嵌入式应用程序.而且他们每一秒都需要与PC或其他数字设备进行通信.有时,交互逻辑非常先进.所以我对常用的方法(如状态机编程风格),协议规范或库感兴趣,可以简化开发这样的事情.
我正在使用带有STM32_USB-FS-Device_Lib_V3.2.1 USB库的STM32F105微控制器,并根据我们的目的调整了VCP示例(与RTOS和串行API集成).
问题是如果连接了USB电缆,但是Windows主机上没有打开端口,几分钟后设备会永久重新进入USB ISR,直到端口打开然后一切正常开始工作.
我已经检测了中断处理程序并且可以看到当故障发生时,ISR处理程序退出然后立即重新进入.发生这种情况是因为在退出中断时,OTG_FS_GINTSTS中的IEPINT标志不清楚.此时OTG_FS_DAINT包含0x00000002(IEPINT1设置),而DIEPINT1包含0x00000080(TXFE).调用清除TXFE的OTGD_FS_Handle_InEP_ISR()中的行,但该位不清除或立即重新置位.当主机上的COM端口重新打开时,中断结束时OTG_FS_GINTSTS和OTG_FS_DAINT的状态始终为零,并且以正常速率发生进一步的中断.请注意,只有在输出数据但主机没有打开端口时才会出现此问题.如果端口打开或没有输出数据,系统将无限期运行.我相信输出的数据越多,问题就越早出现,但目前这是轶事.
VCP代码有一个状态变量,它接受以下枚举值:
UNCONNECTED,
ATTACHED,
POWERED,
SUSPENDED,
ADDRESSED,
CONFIGURED
Run Code Online (Sandbox Code Playgroud)
我们使用CONFIGURED状态来确定是否将数据放入驱动程序缓冲区以进行发送.但是,当连接电缆而不是主机打开端口并连接应用程序时,将设置CONFIGURED状态.我看到当Windows打开端口时,会出现一连串的中断,所以似乎在这个事件上发生了一些通信; 我想知道是否有可能检测主机是否打开了端口.
我或许需要两件事之一:
我正在创建一个游戏扩展,将游戏api暴露给嵌入式python解释器,我在PyMethodDef中得到C2133数组未知大小错误:
static PyMethodDef pyTTPlayerMethods[] = {
{"Get_Player_Name", pyTTGet_Player_Name, METH_VARARGS, "Returns the nickname of a client."},
{"Get_Player_Type", pyTTGet_Player_Type, METH_VARARGS, "TODO: Returns the player type of a client."},
{"Get_Bandwidth", pyTTGet_Bandwidth, METH_VARARGS, "Returns a player's bandwidth."},
{"Get_Ping", pyTTGet_Ping, METH_VARARGS, "Returns the ping of a client."},
{"Get_Kbits", pyTTGet_Kbits, METH_VARARGS, "Return kbits of a client."},
{"Get_Ip", pyTTGet_Ip_Address, METH_VARARGS, "Returns the IP of a client."},
{"Get_Port", pyTTGet_Ip_Port, METH_VARARGS, "Returns the port of a client."},
{"Get_Team", pyTTGet_Team, METH_VARARGS, "Returns the team ID of a client."},
{"Get_Translated_Team", pyTTGet_Translated_Team, …Run Code Online (Sandbox Code Playgroud) 我用system()函数来调用certmgr.exe我的C代码.启动可执行文件后,会出现一个命令promt,显示已成功安装证书.
但我不希望打开命令promt.怎么做??
用C语言调用"exe"的任何其他方法
谢谢,,,
我是StackOverflow的新手,通常会在这里找到我想要的答案.除了这个时间.我很困惑.开始:
几周前,我下载了Delphi Chromium Embedded的 Revision 306 ,并将其安装在Delphi XE的新版本上.现在,这是从DCEF Google Code页面的"下载"部分抓取的.
我注意到的第一件事是该网站提到支持Delphi XE,但没有专门为XE包含的项目包.当然,我安装了适用于Delphi 2010的软件包,因为XE2的软件包不能用于FMX,也许还有其他一些东西(?).
在过去使用过D7的旧版本时,我自然会在表单上删除TChromium,将默认URL设置为http://foundry-local/assist/node/,然后运行应用程序.这是我受到的欢迎:
libcef.dll中的异常EExternal异常...外部异常80000003.
无法在新的Google群组中发布任何内容(他们在"代码"页面上禁用了问题跟踪器),所以我想我会来这里弄清楚发生了什么.但就在此之前,我决定从主干中检出最新的代码构建.成功安装(仍然没有XE包),在空白表单上删除TChromium,然后运行应用程序.这次我受到如下欢迎:
在0004BE24的模块FoundryAssistNodeManager.exe中出现异常EReadError.读取Chromium1.Options.AcceleratedCompositingEnabled时出错:无效的属性路径.
因此:我真的很困惑.
(编辑:该应用程序可以看到核心库,它们正在被选中.)
有没有其他人在Delphi XE上使用DCEF时遇到问题?如果是这样,任何人都有某种解决方案?
看,我正在为我即将发布的产品构建一个定制的帮助平台.使用IE是不可靠的,Gecko的组件不再开发.
任何提示,指导都会很棒.提前感谢你们.
我正在使用Keil C编译器在LM3S6965评估板上开发嵌入式应用程序.有没有创建多线程嵌入式应用程序的选项?
我有一个使用Visual Studio Qt加载项的Visual Studio Qt项目.外接程序自动为.ui文件和每个头文件创建一个自定义构建工具规则,该头文件具有带有Q_OBJECT声明的类,分别运行UIC和MOC.
这一切都完美无缺,直到我为整个项目添加自定义构建工具规则.在此实例中,该规则特定于Release构建并调用代码签名,并设置为Execute after:Build.使用此配置,Debug构建正常工作,但Release不会自动执行MOC或UIC.我可以在项目浏览器中右键单击Q_OBJECT标头和.ui文件,并手动强制编译所有必需的文件,然后它们正确MOC和UIC,然后可以构建,但是清理后重建或构建总是失败.
为什么添加项目项目的自定义生成规则似乎已禁止关联.ui和Q_OBJECT标题的自定义生成工具规则?
我见过嵌入式SVG的源代码,如下所示:
<svg>...</svg>
Run Code Online (Sandbox Code Playgroud)
和其他看起来像:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">...</svg>
Run Code Online (Sandbox Code Playgroud)
具体指定xmlns/xmlns:xlink属性是做什么的?
这与spring提供的嵌入式kafka服务器有关。在运行测试用例时,嵌入式kafka实例化(如下所示)失败。
公共静态KafkaEmbedded EmbeddedKafka = new KafkaEmbedded(1,true,KAFKA_TOPIC);
实例化失败,并出现以下错误。
1> C:\ Users \ r2dev \ AppData \ Local \ Temp \ kafka-1587343850239557903 \ version-2 \ log.1:该进程无法访问该文件,因为该文件正在被另一个进程使用
2> C:\ Users \ r2dev \ AppData \ Local \ Temp \ kafka-7315008084340411800.lock:该进程无法访问该文件,因为该文件正在被另一个进程使用。
我正在使用“ 1.2.0.RELEASE”春季kafka版本和Java 8。
任何人都可以解决此问题,并且能够解决此问题。请告诉我
提前致谢。
我正在使用GCC为Cortex M7编译此代码:
// copy manually
void write_test_plain(uint8_t * ptr, uint32_t value)
{
*ptr++ = (u8)(value);
*ptr++ = (u8)(value >> 8);
*ptr++ = (u8)(value >> 16);
*ptr++ = (u8)(value >> 24);
}
// copy using memcpy
void write_test_memcpy(uint8_t * ptr, uint32_t value)
{
void *px = (void*)&value;
memcpy(ptr, px, 4);
}
int main(void)
{
extern uint8_t data[];
extern uint32_t value;
// i added some offsets to data to
// make sure the compiler cannot
// assume it's aligned in memory
write_test_plain(data …Run Code Online (Sandbox Code Playgroud)