calllib expects bool type

3 Ansichten (letzte 30 Tage)
Tom K
Tom K am 26 Jul. 2021
Beantwortet: Soumya am 11 Jun. 2025
Hi, I am using the FTDI MPSSE library to make an SPI interface (.dll and h file). I want to use the SPI_IsBusy function, but it expects a pointer to a boolean. I read that it is not possible to use a bool type in Matlab calllib. Is it possible to work around this issue?

Antworten (1)

Soumya
Soumya am 11 Jun. 2025
Hi @ Tom K,
While working with the FTDI MPSSE library to create an SPI interface in MATLAB, I encountered a common issue when calling the SPI_IsBusy function. The challenge arose because the function expects a pointer to a boolean (bool*) as an argument, which creates an issue since MATLAB’s calllib function does not support the C bool data type directly. Passing a boolean pointer from MATLAB results in errors or unexpected behaviour due to the mismatch between MATLAB’s data types and those expected by the external C library.
This limitation can be worked around by leveraging MATLAB’s lib.pointer class with a uint8Ptr data type. By initializing a lib.pointer of type 'uint8Ptr' with a value of 0 (representing false), the pointer can be passed to the SPI_IsBusy function. The following code snippet can help you achieve the same:
busyPtr = libpointer('uint8Ptr', uint8(0));
status = calllib('libMPSSE', 'SPI_IsBusy', handle, busyPtr);
For more detailed information on working with pointer arguments in MATLAB when calling external C libraries, you refer to the official MathWorks documentation here:
I hope this helps!

Kategorien

Mehr zu C Shared Library Integration finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by