calllib expects bool type

3 ビュー (過去 30 日間)
Tom K
Tom K 2021 年 7 月 26 日
回答済み: Soumya 2025 年 6 月 11 日
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?

回答 (1 件)

Soumya
Soumya 2025 年 6 月 11 日
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!

カテゴリ

Help Center および File ExchangeC Shared Library Integration についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by