- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
嘿,我的程序是一个 RFID 阅读器,用户扫描他的 rfid 标签,在数据库中检查 rfid 标签值,如果该值与 rfid 标签数据库值一致,门打开并插入 2 个查询。我如何保持运行?我只能扫描一个标签,然后我需要关闭程序,然后检查才会完成,包括 2 个查询。如何同时完成所有事情(我的主要代码中的所有代码)?我使用 while 循环吗?谢谢
//gcc -o RFID $(mysql_config --cflags) RFID.c $(mysql_config --libs) -std=gnu99 -lphidget21
#include <stdio.h>
#include <phidget21.h>
#include <stdlib.h>
#include <mysql/mysql.h>
#include <string.h>
#include <time.h>
char tagVal1[10];
int CCONV TagHandler(CPhidgetRFIDHandle RFID, void *usrptr, char *TagVal, CPhidgetRFID_Protocol proto) //Tag wordt gelezen en LED gaat aan
{
CPhidgetRFID_setLEDOn(RFID, 1);
printf("Tag Read: %s\n", TagVal);
sprintf(tagVal1, "%s", TagVal);
}
int CCONV TagLostHandler(CPhidgetRFIDHandle RFID, void *usrptr, char *TagVal, CPhidgetRFID_Protocol proto) //Tag is verwijderd van RFID lezer
{
CPhidgetRFID_setLEDOn(RFID, 0);
printf("Tag Lost: %s\n", TagVal);
return 0;
}
int rfid_simple()
{
int result;
const char *err;
//Declare an RFID handle
CPhidgetRFIDHandle rfid = 0;
//RFID object wordt aangemaakt
CPhidgetRFID_create(&rfid);
//Wanneer de tag gelezen wordt, wordt het uitgeprint
CPhidgetRFID_set_OnTag2_Handler(rfid, TagHandler, NULL);
//Wanneer de tag verwijderd wordt, wordt het uitgeprint
CPhidgetRFID_set_OnTagLost2_Handler(rfid, TagLostHandler, NULL);
//RFID wordt geopend voor connectie
CPhidget_open((CPhidgetHandle)rfid, -1);
//Programma wacht totdat RFID is aangesloten
printf("Waiting for RFID to be attached....\n");
if((result = CPhidget_waitForAttachment((CPhidgetHandle)rfid, 10000)))
{
CPhidget_getErrorDescription(result, &err);
printf("Problem waiting for attachment: %s\n", err);
return 0;
}
CPhidgetRFID_setAntennaOn(rfid, 1);
//read RFID event data
printf("RFID reader is aangesloten! Druk op enter om het programma af te sluiten\n");
//keep displaying RFID event data until user input is read
printf("RFID tag nodig\n");
getchar();
//RFID wordt afgesloten zodra er op Enter wordt gedrukt
printf("Ik ga afsluiten vriend...\n");
CPhidget_close((CPhidgetHandle)rfid);
CPhidget_delete((CPhidgetHandle)rfid);
return 0;
}
void finish_with_error(MYSQL *conn)
{
fprintf(stderr, "%s\n", mysql_error(conn)); //foutmelding voor mmysql connectie
mysql_close(conn);
exit(1);
}
int main(int argc, char* argv[])
{
MYSQL *conn; rfid_simple();
char* jeMoeder;
jeMoeder = malloc(150);
char* jeVader = "Open Deur";
char *employeeID[20];
//constants met verbindingsinfo
const char *server = "" ;
const char *user = "";
const char *password = "";
const char *database = "";
//verbinding met de database aanmaken
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)){
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
if (mysql_query(conn, "SELECT (Employee_id) FROM Employee")){finish_with_error(conn);} // gewoon een select query
MYSQL_RES *result = mysql_store_result(conn);// opgehaalde data in results storen
if (result == NULL){finish_with_error(conn);}
//We get the result set using the mysql_store_result() function. The MYSQL_RES is a structure for holding a result set.
//geen zin om dit te vertalen naar NL
int num_fields = mysql_num_fields(result); // We get the number of fields (columns) in the table.
const char* rfidTags[num_fields]; // string array declararen
//We fetch the rows and print them to the screen. en slaat het op in string array
MYSQL_ROW row;
while ((row = mysql_fetch_row(result)))
{
for(int i = 0; i < num_fields; i++)
{
printf("%s ", row[i] ? row[i] : "NULL");
rfidTags[i] = row[i];//opslaan in rf[idtag arrays
if(strcmp(rfidTags[i], tagVal1 ) == 0){
printf("Tags zijn gelijk, open de deur.");
//datestamp formuleren voor de sql database
//bufbaf is de tijdelijke bufferstring voor het opbouwen van de timestamp
time_t timer;
char bufbaf[50];
struct tm* tm_info;
time(&timer);
tm_info = localtime(&timer);
//strftime: print de tijd als een string
strftime(bufbaf, 30, "%Y-%m-%d_%H:%M:%S", tm_info);
puts(bufbaf);
const char* insert = "INSERT INTO Notifications (Notification_id, Notification, Timestamp_Notification) VALUES (NULL, '";
const char* insert2 = "'";
const char* insert3 = ",'";
const char* insert4 = argv[1];
const char* insert5 = "')";
char* statementOne;
statementOne = malloc(strlen(insert) + 1 + 300);
strcpy(statementOne, insert);
strcat(statementOne, jeVader);
strcat(statementOne, insert2);
strcat(statementOne, insert3);
strcat(statementOne, bufbaf);
strcat(statementOne, insert5);
printf("%s", statementOne, "\n");
{mysql_error(conn);}
printf("%s", mysql_error(conn));
if (mysql_query(conn, ((char*) statementOne)) !=0){
mysql_error(conn);
}
int lastid = mysql_insert_id(conn);
printf("%d\n", lastid);
sprintf(jeMoeder, "%ld", lastid);
const char* insert6 = "INSERT INTO Access(Employee_id, Notification_id) VALUES('";
const char* insert7 = "',";
const char* insert8 = ")";
//nieuwe char array aanmaken voor de uiteindelijke insert command
char* statementTwo;
//memory allocaten voor de totale string... ja c is raar en ouderwets
statementTwo = malloc(strlen(insert6) + 1 + 150);
//strcpy: string copy, strcat: string concatenate
strcpy(statementTwo, insert6);
strcat(statementTwo, tagVal1);
strcat(statementTwo, insert7);
strcat(statementTwo, jeMoeder);
strcat(statementTwo, insert8);
printf("%s", statementTwo, "\n"); //debugfunctie, print de geformuleerde statement naar de commandline
//de query: conn is de verbinding met server, statement is de geprepareerde char array met de insert statement
if (mysql_query(conn, ((char*) statementTwo)) !=0){
mysql_error(conn);
}
mysql_close(conn);
//printf("%s\n",tagVal1);
return 0;
}else{
printf("Tags zijn onjuist, geen toegang tot de deur");
}
}
printf("\n");
//for(int a = 0; a < num_fields; a++){
//printf("%s", rfidTags[a],"\n");}// testen van array: rfidtags
}
mysql_free_result(result);
return 0;
}
最佳答案
虽然很随意,但您可以将整个事情放入一个永远持续的“while”循环中,然后只捕获 KILL 信号。有一些例子 kill signal example那会让你开始。
您的代码的更好格式是初始化、运行过程,然后是清理。
关于c - 如何保持C程序运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34164065/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!