等待扫描 RFID 徽章的代码 - 它看起来像什么



我正在尝试编写一些集成RFID阅读器的代码,我已经走了得很远,但我仍在为如何设置某种等待时间而苦苦挣扎。

基本上,我有一个连接到越狱iPhone的RFID阅读器,并且我创建了一个存储RFID徽章编号的" NSMutableString",但是问题是当用户单击应用程序中的"AddRFID"按钮时,串行端口被打开,我不知道如何设置循环或类似性质的东西来等待用户扫描他们的RFID徽章, 这样他们就可以将徽章与用户帐户相关联,并将 RFID 徽章 # 放在"NSMutableString"中。

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

到目前为止,这就是我所拥有的,

 /* 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 */
昨天在

朋友的帮助下,我想出了这段代码。 以下代码将捕获的 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

相关内容

最新更新