小编vic*_*tcu的帖子

易失性结构语义

将结构类型变量的实例声明为volatile是否足够(如果其字段是以可重入代码访问的),还是必须将结构的特定字段声明为volatile?

换句话说,两者之间的语义差异(如果有的话)是什么:

typdef struct {
  uint8_t bar;
} foo_t;

volatile foo_t foo_inst;
Run Code Online (Sandbox Code Playgroud)

typedef struct{
  volatile uint8_t bar;
} foo_t;

foo_t foo_inst;
Run Code Online (Sandbox Code Playgroud)

我认识到将指针类型的变量声明为volatile(例如,volatile uint8_t*foo)只是告诉编译器foo指向的地址可能会改变,而不会声明foo指向的值.我不清楚类比是否适用于结构类型的变量.

c struct volatile

65
推荐指数
2
解决办法
3万
查看次数

将角度材质添加到 Nx 工作区

我想将角度材料添加到我的 nx 工作空间中。

角度材料文档(https://material.angular.io/guide/getting-started)说我应该运行ng add @angular/material

我已经在我的 nx 工作区的根目录、我想要将其添加到的应用程序文件夹以及我想要将其添加到的 lib 项目文件夹中尝试过。在所有情况下我都会收到消息 The add command requires to be run in an Angular project, but a project definition could not be found.

Angular Material 文档曾经包含有关如何手动添加依赖项的说明,但我再也找不到了。现在有谁知道如何将其添加到 Nx 工作区中的项目中吗?

angular-material angular nrwl-nx

36
推荐指数
5
解决办法
3万
查看次数

Arduino Bootloader

有人可以解释一下Arduino引导加载程序的工作原理吗?我不是在寻找一个高级答案,我已经阅读了代码,我得到了它的要点.

在Arduino IDE和引导加载程序代码之间发生了许多协议交互,最终产生了许多内联汇编指令,这些指令通过串行接口传输程序来自动编程闪存.

我不清楚的是第270行:

void (*app_start)(void) = 0x0000; 
Run Code Online (Sandbox Code Playgroud)

...我认为函数指针的声明和初始化为NULL.随后在引导加载程序要委托执行用户加载代码的位置调用app_start.

当然,某种程度上app_start需要在某些时候获得非NULL值,以便将所有这些组合在一起.我在引导加载程序代码中没有看到它......它是否被引导加载程序加载的程序神奇地链接了?我认为引导加载程序的主要部分是芯片复位后进入软件的入口点.

包含70个左右的程序集必须是秘密的解码器环,告诉主程序app_start到底在哪里?或者也许是Arduino IDE利用了一些隐含的知识?我所知道的是,如果某人没有将app_start更改为指向0以外的其他位置,那么引导加载程序代码将永远自行旋转......那么诀窍是什么?

编辑

我有兴趣尝试将引导加载程序移植到没有用于引导加载程序代码的单独内存空间的Tiny AVR.由于我很明显引导加载程序代码依赖于某些保险丝设置和芯片支持,我想我真正感兴趣的是将引导加载程序移植到没有这些保险丝和硬件的芯片需要做些什么.支持(但仍具有自编程能力)?

avr arduino bootloader

28
推荐指数
1
解决办法
8957
查看次数

我应该在哪里存放外键?

如果我在两个表之间有关系(两个表都有自己的主键),那么应该指导我决定哪个表应该存储外键?我知道这种关系的本质可能很重要(一对一,一对多,多对多,单向,双向),而且访问模式也很重要.虽然做出决定的系统方法是什么?

mysql database database-design data-modeling

20
推荐指数
3
解决办法
1万
查看次数

滚动我自己的Windows操纵杆HID驱动程序?

我有一个USB操纵杆,我想为它编写自己的HID驱动程序.值得注意的是,我希望在Windows收到操纵杆输入和我的应用程序收到输入事件通知之间注入延迟.我还想改变我的应用程序所获得的操纵杆的身份.我从来没有为Windows编写驱动程序,更不用说HID驱动程序了.任何人都可以向我提供有关如何做到这一点的建议或指示吗?

usb hid joystick

17
推荐指数
1
解决办法
9810
查看次数

mysql查询将字段更新为max(字段)+ 1

我想做的是:

UPDATE table SET field = MAX(field) + 1 WHERE id IN (1, 3, 5, 6, 8);
Run Code Online (Sandbox Code Playgroud)

在我看来,这个语句的语义首先是数据库会出现并确定我field所有的最大值是什么table.然后它会将1加到该值,并将结果值分配给field具有id1,3,5,6和8 的行的列.看起来很简单......

当我尝试运行该查询时,MySQL会对它进行扼杀并说:

ERROR 1111 (HY000): Invalid use of group function
Run Code Online (Sandbox Code Playgroud)

为了得到我想要的结果,你必须使用什么秘诀?

此致,维克

mysql sql mysql-error-1111

12
推荐指数
2
解决办法
2万
查看次数

Angular 库编译时错误“违反了不变量:没有格式路径或格式”

我有一个 Angular 11 项目,它试图集成 SpreadJS Designer,但在 ngcc 步骤中失败,但Compiling @grapecity/spread-sheets-designer-angular : esm2015 as esm2015有异常:

工人 #3 上的错误:错误:违反不变:没有格式路径或格式为 /path/to/my/project/node_modules/@grapecity/spread-sheets-designer-angular : main (formatPath: bundles/grapecity-spread- sheet-designer-angular.umd.js | 格式:未定义)

如何进一步诊断和解决此问题?

这是npx ng version我的项目的输出:

Angular CLI: 11.0.2
Node: 14.15.1
OS: linux x64

Angular: 11.0.2
... animations, cli, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router
Ivy Workspace: Yes

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1100.2
@angular-devkit/build-angular   0.1100.2
@angular-devkit/core            11.0.2
@angular-devkit/schematics      11.0.2
@angular/cdk                    11.0.1
@angular/material               11.0.1
@schematics/angular             11.0.2
@schematics/update              0.1100.2
rxjs                            6.5.3 …
Run Code Online (Sandbox Code Playgroud)

spreadjs angular angular-ivy

9
推荐指数
1
解决办法
531
查看次数

使用(DR)STRACE比较Windows程序执行

我在github上针对node-serialport 直接提出了一个关于这个问题的问题.简而言之,过去在库的v4.x中工作正常的东西不再适用于库的v6.x. 我认为它必须与库如何打开COM端口(选项或其他东西)有关,我怀疑它在当前版本的库中人为地限制了通过USB提供的功率.

我编写了最简单的脚本,我可以使用以下方法重现问题(在问题中发布的脚本):

  • NodeJS和v4.x的库[作品]
  • 库的NodeJS和v6.x [失败]
  • Python和PySerial等价[作品]

根据存储库维护者的建议,我研究并发现了一个名为drstrace的Windows实用程序,它允许我捕获执行一段时间内执行的每个脚本的日志(这些日志作为附件发布在引用中问题).

现在我卡住了,因为我不知道如何制作drstrace日志的正面或反面,尽管我确信在比较三个文件时差异可能很明显.我只是不知道如何阅读drstrace日志和Windows驱动程序和系统调用来突破.

我意识到在这里发布这个问题是一种绝望的行为,但我认为它值得一试.希望很明显,我并不缺乏自己的努力,我现在只是在我的头上,并可以使用更多的帮助.任何指导将不胜感激.最令人敬畏的是那些精通这种诊断水平的人,让他们看一看并阅读茶叶.回馈这样一个重要的开源库会很棒.

2017年11月10日更新

我联系FTDI支持询问:

我在很多产品中使用FT231X.我需要一些帮助来理解Windows FTDI驱动程序如何管理电源.更重要的是,我希望你能帮我理解如何指导驱动程序允许USB允许的全部500mA电流通过Windows电脑传送到我的产品.

答复是:

只需使用我们的FT_Prog实用程序将最大VBUS电流设置为500 mA: 在此输入图像描述

FT231X枚举后,该驱动电流可用.

我还没有尝试过这个建议,但我想和读这篇文章的人分享.事实上,node-serialport 6.0.4行为与node-serialport 4.0.7行为和pyserial行为都不同.

serial-port pyserial strace node.js

7
推荐指数
1
解决办法
159
查看次数

在 Ionic 应用程序中使用 Vega Charts 会导致在某些设备上启动时出现运行时错误

令我懊恼的是,我发现我在 Android (8.0) 手机和 iPhone 上成功开发和测试的 Ionic 4 应用程序在 Android (8.1) 平板电脑的启动画面上冻结,在 iPad 上启动时崩溃。使用adb logcat诊断技术,我观察到在错误的 Android 平板电脑上报告了一个语法错误vendor-es5.js,当我深入到我的项目的 www 文件夹并转到错误的引用行时,它说SyntaxError: Unexpected token *,我登陆了代码显然来自node_modules/d3-delaunay/src/delaunay.js并且使用了 es6 取幂运算符**,特别是:

r = 1e-8 * Math.sqrt((bounds[3] - bounds[1])**2 + (bounds[2] - bounds[0])**2);
Run Code Online (Sandbox Code Playgroud)

我不知道为什么这个代码是有问题的一些设备,也不知道是什么原因造成这样的代码,这是不ES5(?)结束了在vendor-es5.js文件没有被适当地transpiled。为了更进一步,我手动破解了 delaunay.js 文件,用它们的等效用法替换了所有取幂实例,Math.pow()果然,运行时更进一步,但最终在一个来自node_modules/vega-dataflow/src/dataflow/load.js并抱怨的函数中再次搁浅SyntaxError: Unexpected token function,特别是在这一行:

export async function request(url, format) {
Run Code Online (Sandbox Code Playgroud)

同样,显然 async/await 不是 es5 构造,那么为什么它以vendor-es5.js. 在这一点上,我觉得这里有一些系统性的错误,我没有能力理解如何克服它,而不是切换图形库?如果可能的话,我想避免这种情况,所以我的问题是:

  1. 为什么会这样?
  2. 为什么它只对某些设备而不是所有设备有影响?
  3. 有没有一种方法可以在不切换到不同图形库的情况下解决这个问题?

更新 #1 …

android vega ionic-framework webpack vega-lite

7
推荐指数
1
解决办法
388
查看次数

如何在我的Java应用程序的用户前端使用Swing GUI或轻量级Web客户端之间做出决定?

在用户界面方面,我似乎总是有这种内部斗争.我构建了一个应用程序"引擎",并且在我的算法工作之后倾向于推迟用户界面.然后我来回试图决定如何让用户与我的程序进行交互.就个人而言,我是命令行的粉丝,但我不能指望我的用户.

我非常喜欢在web 2.0和ajax时代的浏览器中可能实现的功能.另一方面,制作Swing前端也不是那么难,而且你通常可以依赖于更一致的用户呈现(尽管使用像YUI或jQuery这样的好的javascript框架对于规范浏览器有很长的路要走).

显然,这两种方法都有其优点和缺点.那么,什么标准/参数/情况应该让我使用轻量级(例如基于Web的)GUI?什么标准/参数/情况应该让我使用更重(例如基于Swing)的GUI?

我不打算开始一场火焰战,只是对社区的建设性/客观意见感兴趣.

编辑#1 鉴于前几个回复,我想澄清一下,我想部署我的应用程序,而不是必须在某些互联网服务器上托管它.所以我必须部署一个轻量级的Web服务器基础设施,一个Jetty/Tomcat或类似的.

java ajax user-interface swing

6
推荐指数
1
解决办法
904
查看次数