2012-12-11 25 views
0

我想写一些集成了RFID阅读器的代码,而且我已经得到了很多,但我仍然在为如何设置某种等待时间而苦苦挣扎。等待扫描RFID徽章的代码 - 它看起来像什么?

基本上,我有一个连接到越狱iPhone的RFID阅读器,并且我创建了一个存储RFID徽章号码的“NSMutableString”,但问题在于串行端口在用户单击“ AddRFID“按钮,并且我无法弄清楚如何设置一个循环或其他性质的东西来等待用户扫描他们的RFID徽章,以便他们可以将徽章与用户帐户关联起来, “NSMutableString”中的RFID徽章#。

如果您对如何完成此任务有任何想法,我不介意看到一些代码示例。

到目前为止,这是我,

/* Begin addRFID - Serial Communication */ 

- (IBAction)addRFID:(id)sender { 

    // btnAddRFID pressed 

    NSLog(@"rfid badge # is %@",rfidbadgenumber); 

    // launch an alert with text input 
    UIAlertView *alertrfid = [[UIAlertView alloc] initWithTitle:@"Scan RFID badge" 
                message:@"Associate RFID badge with user account" 
                delegate:self 
              cancelButtonTitle:@"Dismiss" 
              otherButtonTitles:@"Save", nil]; 



// set alert with a text input field 
[alertrfid setAlertViewStyle:UIAlertViewStylePlainTextInput]; 
// set text field input to max character length of 10 
//[[alertrfid textFieldAtIndex:0].text substringWithRange:NSMakeRange(0,10)]; 



    [alertrfid show]; 


    // set the delegate for the UIAlertView textfield 
    [alertrfid textFieldAtIndex:0].delegate = self; 



    //open serial port 
    [serial open:B2400]; 

    NSLog(@"rfid badge # is: %@",rfidbadgenumber); 


    // assign alert input text to RFID badge # 
    [alertrfid textFieldAtIndex:0].text = rfidbadgenumber; 


    } 

    # pragma mark - JailbrokenSerialDelegate 
    - (void) JailbrokenSerialReceived:(char) ch { 

    NSString *rfidbadgenumbernew = [[NSString alloc]init]; 

    NSLog(@"rfidbadgenumbernew is: %@",rfidbadgenumbernew); 

    // put serial received data in a char buffer 
    [rfidbadgenumber stringByReplacingOccurrencesOfString:rfidbadgenumber withString:rfidbadgenumbernew]; 

    NSLog(@"serialrecvd - rfidbadgenumber is: %@",rfidbadgenumber); 

    //[rfidbadgenumber appendFormat:@"%c", ch]; 

    //[rfidbadgenumber stringByReplacingOccurrencesOfString:rfidbadgenumber withString:rfidbadgenumbernew]; 
    } 

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

NSLog(@"Range: %@", NSStringFromRange(range)); 
return (textField.text.length - range.length + string.length <= 10); 
} 

// add method for cancel button 
    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 

    if (buttonIndex == 0) { 
    NSLog(@"The cancel button was clicked"); 

    rfidbadgenumber = NULL; 

    //rfidbadgenumbernew = NULL; 

    [serial close]; 
} 

// do stuff for additonal buttons 
} 

    // close serial port 


    /* End addRFID - Serial Communication */ 

回答

0

与一个朋友的帮助下我昨天想出了这个代码。以下代码将捕获的RFID标签ID放入位于UIAlertView中的文本字段中。

/* Begin addRFID - Serial Communication */ 

- (IBAction)addRFID:(id)sender { 

// btnAddRFID pressed 

NSLog(@"rfid badge # is %@",newrfidtagid); 


// set alert with a text input field 
[alertrfid setAlertViewStyle:UIAlertViewStylePlainTextInput]; 
// set text field input to max character length of 10 
//[[alertrfid textFieldAtIndex:0].text substringWithRange:NSMakeRange(0,10)]; 

[alertrfid show]; 

// set the delegate for the UIAlertView textfield 
[alertrfid textFieldAtIndex:0].delegate = self; 


//open serial port 

[serial open:B2400]; 
if(serial.isOpened) 
{ 
    NSLog(@"Open"); 
} 
else NSLog(@"closed dingo"); 
} 


# pragma mark - JailbrokenSerialDelegate 
- (void) JailbrokenSerialReceived:(char) ch { 

NSLog(@"got it"); 

NSString *s = [NSString stringWithFormat:@"%c",ch]; 
NSLog(@"s = %@",s); 

[newrfidtagid appendString:s]; 

NSLog(@"rfid char = %@",newrfidtagid); 

if (newrfidtagid.length == 10) 
{ 
    NSLog(@"new tagid = %@",newrfidtagid); 
    [alertrfid textFieldAtIndex:0].text = newrfidtagid; 
    //[serial open:B2400]; 
    } 
    } 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

NSLog(@"Range: %@", NSStringFromRange(range)); 
return (textField.text.length - range.length + string.length <= 10); 
} 

// add method for cancel button 
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 

if (buttonIndex == 0) { 
    NSLog(@"The cancel button was clicked"); 

    [serial close]; 

    [alertrfid dismissWithClickedButtonIndex:0 animated:YES]; 
    [newrfidtagid setString:@""]; 
    [alertrfid textFieldAtIndex:0].text = @""; 

    //alertrfid.hidden = TRUE; 

} 

// do stuff for additonal buttons 
} 

// close serial port