目前的構想是利用while(1)持續動作
當a==1時,假設是偵測是否藍芽有傳送過來,
Hwr並接收此値,假設接收的値都為1~10
當Hwr<=6時,讀取另一個寫檔的txt檔案,此値為1~100
假設Hwr是4,而Lwr的値為 100,99,98,97,96,95
並且以ctr = Lwr[Hwr]知道是 ctr = Lwr[4]
來讓ctr =97,並利用ctr =97 而在利用switch case與keybd_event來動作模擬的按鍵
現在不太懂得是Ctr = Lwr[Hwr]; 這一行,明明 ctr =97 卻因FILE 跟INT不符合
int main(void) {
int a; //bluetooth
int Hwr;
int Ctr;
int Lwr[6];
while (1) {
if (a == 1) {
Hwr =a;
if (Hwr <= 6){
FILE *Lwr[6];
Lwr[6] = fopen("test.txt", "r");//讀檔
Ctr = Lwr[Hwr];
}
else{
Ctr = Hwr;
}
}
switch(ctr){
case 97;
keybd_event(xxxx);
}
}
if (Hwr <= 6){
FILE *Lwr[6];
Lwr[6] = fopen("test.txt", "r");//讀檔
Ctr = Lwr[Hwr];
}
先回答您的問題,這裡會出錯是因為,您在 if
內宣告了 FILE *Lwr[6];
,
這行個意思是,宣告一個大小為 6 的陣列,其內容型態為 FILE *
,Lwr[Hwr]
所以這個地方取出來的型態是 FILE *
,您將其賦予給 int Ctr
,型態不符所以出錯了,
然後還有很多感覺怪怪的地方 XD。
目前寫到這個部分有些問題,
我利用斷點來查詢是否讀到的値
,但是查詢的結果不是讀檔所讀取出來的値
難道利用For迴圈來一個一個抓取test.txt的6筆資料不行嗎?
if (serial.Open(4, 9600)){
printf("Port opened successfully\n");
char *lpBuffer =(char*)malloc(sizeof(char)*50);
while(1){
int Hwr,ctr;
int h[6];
int dwBytesRead = serial.ReadData(lpBuffer,1 );
lpBuffer [1]= serial.ReadData(lpBuffer,0);
FILE *Lwr;
if(dwBytesRead){
Hwr = dwBytesRead;
if (Hwr <=6)
{
Lwr = fopen("C:\\Users\\user\\Desktop\\BlueTooth(2)\\text.txt","r");
for (int i = 0; i < 6; i++)//
{
fscanf(Lwr,"%d",h[i]);
}
ctr = h[Hwr];
printf("%d\n",lpBuffer);
fclose(Lwr);
}else
{
ctr = Hwr;
}
}
test.txt 的內容是什麼呢?
程式應該是沒問題 (讀檔的部分)。
test主要是網頁所讀取出來的圖片編號,切換時會將編號重新寫檔
現在有些部分有修正了,但是還是有一些問題
1.讀檔時,所讀取出來的會出現亂碼
2.只能讀取一次test.txt檔案的樣子,如果切換網頁編號會改變,但是如果讀取只能讀取一次,這樣就沒辦法利用switch case在利用keybd-event來操作了。
是否是多寫一個條件,是否有接收到藍芽所傳送過來的値,在利用Hwr=藍芽接收到的値,這樣讀取一次的問題是否就解決了?
int main(){
if (serial.Open(4, 9600)){
printf("Port opened successfully\n");
char *lpBuffer =(char*)malloc(sizeof(char)*50);
while(1){
int ctr;
int h [6];
int Hwr = serial.ReadData(lpBuffer,1 );
lpBuffer [1]=serial.ReadData(lpBuffer,0);
if (Hwr <=6)
{
FILE* Lwr;
fopen_s(&Lwr,"C:\\Users\\user\\Desktop\\BlueTooth(2)\\test.txt","r");
for (int i = 0; i < 6; i++)
{
fscanf(Lwr,"%d",&h[i]);
}
ctr = h[Hwr];
printf("%d\n",lpBuffer);
fclose(Lwr);
}else
{
ctr = Hwr;
}
測試程式碼,可以重複讀檔。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
while (true)
{
int data[5] = {0};
FILE *pFile = fopen("test.txt", "r");
for (int i = 0; i < 5; i++)
{
fscanf(pFile, "%d", &data[i]);
}
fclose(pFile);
int stop = 0;
}
system("pause");
return 0;
}
text.txt 內容
1 2 3 4 5