小编Cod*_*odo的帖子

SPI交易提前终止 - ESP-IDF

使用ESP-IDF(ESP32 SDK)的ESP32应用程序与同一SPI总线上的两个SPI从站通信(ILI9341 TFT驱动程序,NRF24L01 + RF收发器).总的来说,它很棒.但是,从RF收发器接收的一些数据被截断,即只有前几个字节是正确的,其余的是垃圾.

问题或多或少是可重现的,并且只有在接收截断数据之前立即与其他从设备(TFT驱动器)进行SPI通信时才会出现问题.

有问题的SPI事务是一个全双工事务,它在接收10个字节时发送一个命令字节和10个哑字节.它使用VSPI总线和DMA通道1.如果出现问题,只有前几个字节是正确的,而最后2到6个字节是无效的(0或虚拟字节的值).

我挖掘了SDK代码(spi_master.c),添加了调试代码,并在DMA的lldesc_t结构中观察到了一个令人惊讶的值:

在事务开始时,它用length = 0x0c和初始化size = 0x0c.0x0c是12个字节,即10个字节四舍五入到下一个字.

在交易结束时,值为length = 0x07size = 0x0c(长度可能略有不同).因此,事务只读取7个字节,然后以某种方式终止.或者更确切地说DMA操作终止.

  • 您是否同意数据表明提前终止?
  • 提前终止的原因是什么?
  • 是否有一些寄存器可以指出问题的原因?

代码非常简单:

uint8_t* buffer = heap_caps_malloc(32, MALLOC_CAP_DMA);

...

memset(buffer, CMD_NOP, len);
spi_transaction_t trx;
memset(&trx, 0, sizeof(spi_transaction_t));
trx.cmd = 0x61;
trx.tx_buffer = buffer;
trx.length = 8 * 10;
trx.rx_buffer = buffer;
trx.rxlength = 8 * 10;

esp_err_t ret = spi_device_transmit(spi_device, &trx);
Run Code Online (Sandbox Code Playgroud)

microcontroller spi freertos esp32

5
推荐指数
1
解决办法
861
查看次数

Gradle / Maven 在处理版本范围方面的差异

我正在使用QR-Bill 库 v2.5.3。作为其依赖项之一,它使用 range 指定 PDFBox [2.0.0,3.0)

<dependency>
  <groupId>org.apache.pdfbox</groupId>
  <artifactId>pdfbox</artifactId>
  <version>[2.0.0,3.0)</version>
  <scope>runtime</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

对于 Gradle 项目,依赖关系解析为pdfbox-2.0.24. 对于 Maven 项目,它解析为pdfbox-3.0.0-RC1.

Maven 和 Gradle 对待版本范围的方式真的不同吗?库的正确范围是多少,以便 Gradle 和 Maven 都使用 PDFBox 的最新 2.x 版本,但不使用 3.x 版本(因为它不兼容)?

进一步的调试细节:

Maven项目

https://github.com/manuelbl/SwissQRBill/tree/master/examples/maven_example

% mvn dependency:tree

[INFO] net.codecrete.qrbill:maven-example:jar:1.0-SNAPSHOT
[INFO] \- net.codecrete.qrbill:qrbill-generator:jar:2.5.3:compile
[INFO]    +- io.nayuki:qrcodegen:jar:1.7.0:runtime (version selected from constraint [1.6.0,2.0))
[INFO]    \- org.apache.pdfbox:pdfbox:jar:3.0.0-RC1:runtime (version selected from constraint [2.0.0,3.0))
[INFO]       +- org.apache.pdfbox:fontbox:jar:3.0.0-RC1:runtime
[INFO]       \- commons-logging:commons-logging:jar:1.2:runtime
Run Code Online (Sandbox Code Playgroud)

摇篮项目

https://github.com/manuelbl/SwissQRBill/tree/master/examples/gradle_example

% gradle dependencies --configuration runtimeClasspath …
Run Code Online (Sandbox Code Playgroud)

java gradle maven

5
推荐指数
1
解决办法
331
查看次数

我得到错误:未指定'i'的注册名称

#include <stdio.h>
register int i = 10;
int main(void)
{
    printf( " i = %d \n ", i );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在这里,我将变量i声明为寄存器.但是,在编译时显示以下错误

" error: register name not specified for ‘i’ "
Run Code Online (Sandbox Code Playgroud)

为什么我们不应该在全局使用register关键字?

c

4
推荐指数
2
解决办法
4426
查看次数

java.sql.SQLException:ORA-00932:不一致的数据类型:预期NUMBER得到了BINARY

我在Dao类中有一个返回的方法List<Object[]>,我使用的是命名查询

public List<Object[]> getListByCustomer(Session session, int customerId, List<Integer> strIds) {
  Query namedQuery = session.createSQLQuery(QueryConstants.EXPORT);
  namedQuery.setParameter("customer", customerId);
  namedQuery.setParameter("stringId", strIds);
  List<Object[]> objects = namedQuery.list();
  return objects;
}
Run Code Online (Sandbox Code Playgroud)

我想将List<Integer> strIdsstringId 传递给命名查询,如下所示:

public class QueryConstants {
  public static final String EXPORT = 
    "SELECT sv.NAME, sv.TYPE, sv.CLIENT_ADDRESS, sv.NAME_REDUNDANT, sv.DEPARTURE_DATE, s1.CODE,sv.STATE, sv.CODE "
    + "FROM VIEW sv, PROCESS p1, SET s1 " 
    + "WHERE sv.R_ID = p1.R_ID and p1.ISSUER_ID = s1.USER_ID and sv.CUSTOMER_ID = :customer and sv.R_ID IN (:stringId)";
}
Run Code Online (Sandbox Code Playgroud)

但我明白了 ORA-00932: …

java sql oracle named-query

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

访问从 MemorySegment 读取的指针时,出现“IndexOutOfBoundsException:对段的越界访问...”

我正在尝试测试 Java 21 的外部函数和内存功能。这是我的代码:

\n
public static void main(String[] args) {\n        // 1. Find foreign function on the C library path\n        Linker linker = Linker.nativeLinker();\n        SymbolLookup stdlib = linker.defaultLookup();\n        MethodHandle radixsort = linker.downcallHandle(stdlib.find("radixsort").orElseThrow(), FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.JAVA_INT, ValueLayout.ADDRESS, ValueLayout.JAVA_CHAR));\n        // 2. Allocate on-heap memory to store four strings\n        String[] javaStrings = {"mouse", "cat", "dog", "car"};\n\n        // 3. Use try-with-resources to manage the lifetime of off-heap memory\n        try (Arena offHeap = Arena.ofConfined()) {\n            // 4. Allocate a region of off-heap memory to store …
Run Code Online (Sandbox Code Playgroud)

java project-panama java-21 java-ffm

4
推荐指数
1
解决办法
238
查看次数

C中的长整数

嘿伙计们,这里的初学者问题.

如何在C中读取12或13位数的长整数(如书的ISBN号)?我想从带有书籍信息(ISBN /名称/作者)的文本文件中读取数字.

文本文件的内容如下:

0393312836

发条橙

安东尼伯吉斯

0199536759

米德尔马契

布雷特伊斯顿埃利斯

...

...

...

我正在使用此代码:

int main(void){

    FILE *f;
    char name[MAX], writer[MAX], line[MAX];
    long isbn;

    f=fopen("path.txt","r");
    if(f == NULL){
        return 0;
        }

    while (fgets(line, 1024, f) != NULL){

        sscanf(line,"%ld", &isbn);
        printf("ISBN: %ld\n",isbn);

        fgets(nome, 1024, f);
        printf("NAME: %s",name);

        fgets(line, 1024, f);
        printf("WRITER: %s",writer);


        }
    fclose(f);

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

他能够阅读书籍和作者的姓名,但如果他们有9位数或更少的数字,他只会阅读这些数字.我需要做些什么来完成这项工作?

提前致谢.

c integer file long-integer

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

从PL/SQL块运行SCRIPT

如何在pl/sql块中使用"START SCRIPT"?

我想用这样的东西

declare
begin
   proc(para1,para2);
   execute immediate 'start prompt1' ; 
end;
/
Run Code Online (Sandbox Code Playgroud)

另外我想知道,我可以从prompt1获取一个值到我调用脚本的PL/SQL块吗?因为我需要使用该值在PL/SQL块中执行某些操作.

oracle plsql prompt

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

Raster.getPixels()返回的像素组件的顺序是什么?

我写过图像处理代码,将像素数据复制成整数数组,如下所示:

void processImage(BufferedImage source) {

    WritableRaster raster = source.getRaster();
    int numBands = raster.getNumBands();
    int height = raster.getHeight();
    int width = raster.getWidth();

    int[] pixelRow = new int[width * numBands];
    for (int i = 0; i < height; i++) {
        raster.getPixels(raster.getMinX(), raster.getMinY() + i, width, 1, pixelRow);

        // do some processing
    }

    // create a new image
    return newImage;
}
Run Code Online (Sandbox Code Playgroud)

该代码适用于我迄今为止测试过的图像.所述pixelRow阵列似乎总是接收的顺序的红,绿和蓝为与3个频带的图像(没有alpha通道)和像素分量的顺序红,绿,蓝和Alpha对于那些4个频带(alpha通道).

但是,我找不到任何说明这一点的说明.是否保证我将始终按顺序获取像素组件?有没有描述这个的规范?

java awt java-2d

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

C# 迭代 excel 工作表的有效方法

我有以下代码:

string result = "";
for(int i=2; i<=excelRange.Rows.Count; i++)
{
    result += excelRange.Cells[i, 2].Value2;
}
Run Code Online (Sandbox Code Playgroud)

对于包含数百个条目的 Excel 文件,这需要 5 秒钟。也许有更有效的方法吗?我只想要从 B2 到 Bn 的值。

c# iteration excel

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

在枢轴控制中更改标题和标题的背景

在我的Phone 7应用程序中,我使用了一个数据透视控件.现在我想改变其标题和标题区域的背景.我怎样才能做到这一点?

是否有可以自定义的枢轴控件的整体模板?

我已经尝试将包含pivot控件的网格背景设置为标题颜色,然后将每个pivot项的背景设置为原始背景颜色.一见钟情看起来不错.但是当您向左擦拭枢轴项目以显示第二个项目时,在两个枢轴项目之间会出现标题颜色的区域.所以这种方法不起作用.

此外,我试图自定义标题和标题项的模板.但这些模板仅涵盖文本本身的区域,而不是整个标题和模板区域.

silverlight windows-phone-7

2
推荐指数
1
解决办法
7196
查看次数