我编写了代码,使用了 pyqt5、线程、asyncio。我编译了一个可执行文件,并且由于代码还需要一个图像和一个带有地址的文件,因此我使用 inno setup 编译了一个安装程序。适用于 Windows 8。安装、检查,一切正常。我在 Windows 10 上安装了它,检查了一下,它可以运行。我给了用户 Windows 7,他安装了它,启动了它,结果:
它不起作用。请帮帮我。代码和安装程序位于:
https://github.com/MATE-linux/Youtube-app-with-nodpi
需要从程序(用 C 编写)获取 UEFI/BIOS 制造/组装日期。
该程序设计专门在 Windows 10/11 下运行。
我已经使用下面的代码获得了 UEFI/BIOS 版本。在注册表中手动搜索后,我没有找到“Date BIOS”的单独键。 Windows注册表中是否有这样的信息?或者 WinAPI 工具(至少是最简单的工具)还不够吗?
#include <stdio.h>
#include <Windows.h>
int main(int argc, char* argv[])
{
HKEY rKey;
TCHAR Reget[256];
DWORD RegetPath = sizeof(Reget);
RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"HARDWARE\\DESCRIPTION\\System\\BIOS", NULL, KEY_QUERY_VALUE, &rKey);
RegQueryValueEx(rKey, L"BIOSVersion",NULL,NULL, (LPBYTE)&Reget,&RegetPath);
printf("%ls", Reget);
getchar();
return 0;
}
(代码不是我的;由 stackoverflow 用户 @Marchosias 发布)
Vim 的 Vimwiki 插件有一个命令:VimwikiSearchTags NameTag
,当调用该命令时,它会带您到找到的第一个注释,并在左下角以“1 of 7”的形式显示找到的注释数量。
问题:如何浏览这 7 条注释?
手册没有提及任何有关此的内容:https://github.com/vimwiki/vimwiki/blob/master/doc/vimwiki.txt#L993
在相关问题https://vi.stackexchange.com/a/24413的帖子中建议使用CTR+]
和CTR+o
,但我不明白这些命令背后的逻辑。
更新型多巴胺
我偶然发现了一篇文章https://gopherproxy.meulie.net/box.matto.nl/0/usingvimwikitags.txt其中说运行命令后:VimwikiSearchTags NameTag
你可以输入:lnext
或:lprevious
浏览笔记。您也可以输入:lopen
来打开笔记列表。
换句话说,事实证明:VimwikiSearchTags NameTag
它的工作方式与类似:vim /NameTag/g ./**/*.md | :copen
,但没有:copen
。实际上,这个问题可以算是结束了,但是,我仍然会感谢任何提示,因为我知道在 Vim 中总是有几种方法可以解决问题。
在有关光线追踪的文章中,总是给出球体的例子,因为它由一个简单的方程定义,但是其他图元呢?当光栅化时,假设任何表面都由三角形近似,这是可以理解的。但如何使用光线追踪来渲染人的脸部尚不清楚;这个相同的表面需要用某种方程来表示吗?也就是说,我想了解在具有光线追踪渲染的引擎中场景是如何定义的,如果在使用经典光栅化渲染的引擎中,场景被定义为一组三角形。
尝试调试 RP2040(R-Pi Pico)上的固件时,OpenOCD 给出错误“错误:未知闪存设备(ID 0x00184068)”
该板有一个存储芯片“BY25Q128ES - 128M BIT SPI NOR FLASH”
在Raspberry Pi 论坛上,他们讨论了修补文件src/flash/nor/spi.c 的必要性
我找到了内存芯片的数据表,但我不太明白我需要在其中查找哪些参数才能正确填写FLASH_ID
宏本身创建该类型的对象flash_device
并具有签名:
/// @file: src/flash/nor/spi.h
/* data structure to maintain flash ids from different vendors */
struct flash_device {
const char *name;
uint8_t read_cmd;
uint8_t qread_cmd;
uint8_t pprog_cmd;
uint8_t erase_cmd;
uint8_t chip_erase_cmd;
uint32_t device_id;
uint32_t pagesize;
uint32_t sectorsize;
uint32_t size_in_bytes;
};
#define FLASH_ID(n, re, qr, pp, es, ces, id, psize, ssize, size) \
{ \
.name = n, \
.read_cmd = re, \
.qread_cmd = qr, \
.pprog_cmd = pp, \
.erase_cmd = es, \
.chip_erase_cmd = ces, \
.device_id = id, \
.pagesize = psize, \
.sectorsize = ssize, \
.size_in_bytes = size, \
}
/// @file: src/flash/nor/spi.c
// ....
/* Shared table of known SPI flash devices for SPI-based flash drivers. Taken
* from device datasheets and Linux SPI flash drivers. */
const struct flash_device flash_devices[] = {
/* Note: device_id is usually 3 bytes long, however the unused highest byte counts
* continuation codes for manufacturer id as per JEP106xx.
*
* All sizes (page, sector/block and flash) are in bytes.
*
* Guide to select a proper erase command (if both sector and block erase cmds are available):
* Use 4kbit sector erase cmd and set erase size to the size of sector for small devices
* (4Mbit and less, size <= 0x80000) to prevent too raw erase granularity.
* Use 64kbit block erase cmd and set erase size to the size of block for bigger devices
* (8Mbit and more, size >= 0x100000) to keep erase speed reasonable.
* If the device implements also 32kbit block erase, use it for 8Mbit, size == 0x100000.
*/
/* name read qread page erase chip device_id page erase flash
* _cmd _cmd _prog _cmd* _erase size size* size
* _cmd _cmd
*/
FLASH_ID("st m25pe10", 0x03, 0x00, 0x02, 0xd8, 0x00, 0x00118020, 0x100, 0x10000, 0x20000),
//....
FLASH_ID("st m25p05", 0x03, 0x00, 0x02, 0xd8, 0xc7, 0x00102020, 0x80, 0x8000, 0x10000),
//...
FLASH_ID("sp s25fl512s", 0x13, 0x00, 0x12, 0xdc, 0xc7, 0x00200201, 0x200, 0x40000, 0x4000000),
在这种情况下,什么是“pagesize
和” sectorsize
?
在闪存芯片的数据表中它应该叫什么?