首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待RFID徽章被扫描的代码-它看起来像什么?

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

Stack Overflow用户
提问于 2012-12-11 08:44:18
回答 1查看 290关注 0票数 0

我正在尝试编写一些集成RFID读取器的代码,我已经掌握了很多,但我仍然在努力解决如何设置某种等待时间。

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

如果您对如何实现这一点有任何想法,我不介意看一些代码示例。

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

代码语言:javascript
复制
 /* 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 */
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-22 02:34:43

昨天在一个朋友的帮助下,我想出了这段代码。下面的代码将捕获的RFIDText域放入UIAlertView中的文本字段中。

代码语言:javascript
复制
/* 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13811827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档