我正在尝试编写一些集成RFID读取器的代码,我已经掌握了很多,但我仍然在努力解决如何设置某种等待时间。
基本上,我有一个连接到越狱iPhone的RFID阅读器,我已经创建了一个"NSMutableString“来存储RFID徽章编号,但问题是当用户单击应用程序中的"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 */发布于 2012-12-22 02:34:43
昨天在一个朋友的帮助下,我想出了这段代码。下面的代码将捕获的RFIDText域放入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 porthttps://stackoverflow.com/questions/13811827
复制相似问题