我在基于FASTRACK SUPREME的项目上工作,该SUPREME必须通过串行RS232接收命令。
问题是: 当我使用HyperTerm时命令ATDxxxxxxxxx;工作良好。 当我使用CVI RS232库时没有任何反应。是否有可能我的命令仍然被阻止
串口缓冲区? 这是我的代码:
#include <ansi_c.h>
#include <cvirte.h>
#include <userint.h>
#include <rs232.h>
#include <utility.h>
#include <formatio.h>
#include <string.h>
int configurePort(void);
int sendCommand(void);
int port_open;
int error;
int main()
{
configurePort();
sendCommand ();
return 0;
}
int configurePort()
{
port_open = 0;
error = OpenComConfig (4, "COM4",115200 ,0,8,1,0, -1);
if (error)
{
printf("Error!\n");
}
if (error == 0)
{
port_open = 1;
SetXMode (4, 0);
SetCTSMode (4, 0);
SetComTime (4, 0);
}
return 0;
}
int sendCommand ()
{
char bufferWrite[100] ;
Fmt(bufferWrite,"%s","ATD0040761768027;");
ComWrt(4, bufferWrite, 18);
return 0;
}
问题出在哪里?请帮忙! 感谢。
答案 0 :(得分:0)
我尝试了你的代码。我不确定你的意思是什么“没有任何反应”当我使用代码时(除了我必须使用端口2)一切都运行良好。 ComWrt函数中的字符数为18。
确保您尝试使用的com端口可用。
除了你的#includes之外,这里有你在我的电脑上运行的小mod的代码,运行CVI 2010的WinXP:
#define PORT 2
#define PORTNAME "COM2"
int configurePort(void);
int sendCommand(void);
int port_open;
int error;
int main()
{
configurePort();
sendCommand ();
return 0;
}
int configurePort()
{
port_open = 0;
error = OpenComConfig (PORT, PORTNAME,115200 ,0,8,1,0, -1);
if (error)
{
printf("Error!\n");
}
if (error == 0)
{
port_open = 1;
SetXMode (PORT, 0);
SetCTSMode (PORT, 0);
SetComTime (PORT, 0);
}
return 0;
}
int sendCommand ()
{
char bufferWrite[100] ;
Fmt(bufferWrite,"%s","ATD0040761768027;");
error = ComWrt(PORT, bufferWrite, sizeof("ATD0040761768027;"));
return 0;
}