我有一个可能来自任何线程的回调.当我得到这个回调,然后我想在主线程上执行某个任务.
我是否需要检查我是否已经在主线程上 - 或者是否因为没有执行此检查而遭受任何惩罚?请调用下面的代码?
dispatch_async(dispatch_get_main_queue(), ^{
// do work here
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试与一台连接到EasySync USB2-H-5004-M USB转RS485转换器的USB设备通信,波特率为3750000,但是在OSX上.
我有一些在Windows上工作的c ++代码并且设法让它在OSX上编译(使用D2XX dylib而不是dll)但是我在某处有通信问题我不知道从哪里开始以及如何解决这个问题
我正在使用openFrameworks/c ++,列出设备的方法如下所示:
int FTDI::enumerateDevices(){
DWORD numDevs;
FT_STATUS ftStatus = FT_CreateDeviceInfoList(&numDevs);
numPortsFound = 0;
if (ftStatus == FT_OK) {
ofLog(OF_LOG_NOTICE, "Number of FTDI devices is %d",numDevs);
devicesList = (FT_DEVICE_LIST_INFO_NODE*)malloc(sizeof(FT_DEVICE_LIST_INFO_NODE)*numDevs);
ftStatus = FT_GetDeviceInfoList(devicesList, &numDevs);
if (ftStatus == FT_OK) {
printf("\n");
for (int i = 0; i < numDevs; i++) {
ofLog(OF_LOG_VERBOSE, "Dev %d:",i);
ofLog(OF_LOG_VERBOSE, " Flags=0x%x",devicesList[i].Flags);
ofLog(OF_LOG_VERBOSE, " Type=0x%x",devicesList[i].Type);
ofLog(OF_LOG_VERBOSE, " ID=0x%x",devicesList[i].ID);
ofLog(OF_LOG_VERBOSE, " LocId=0x%x",devicesList[i].LocId);
ofLog(OF_LOG_VERBOSE, " SerialNumber=%s",devicesList[i].SerialNumber);
ofLog(OF_LOG_VERBOSE, " Description=%s",devicesList[i].Description);
ofLog(OF_LOG_VERBOSE, " ftHandle=0x%x\n",devicesList[i].ftHandle);
}
numPortsFound …Run Code Online (Sandbox Code Playgroud)