完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,
我使用CyPress PSoC 4、CY8CKIT-042-BLE、CY8C4248LQI-BL585和ESP8266。 我希望这两个模块通过UART互相通信。 我无法发送完整的字符串,例如,一个15字节的字符串。我想使用应用程序中字符串的参数。 但是,他们之间的完整数据。我尝试使用API——UARTHUUARGETBETTER()和UARTHARUARTGETHARCH(),如果我想从ESP中接收串行打印的数据。 当我想把字符串放在ESP的串行端口上时,使用UARTHARUARTPARSTRIGHT()和UARTHUARTPARCHART()。 这不起作用。 以上来自于百度翻译 以下为原文 Hello, I am using Cypress PSoC 4, CY8CKIT-042-BLE, CY8C4248LQI-BL583 and ESP8266. I want these two modules to communicate with each other through UART. I am unable to send a complete string, for example, a 15 bytes string. I want to use the parameters of the string in the application. But, the complete data between them. I tried using APIs- UART_UARTGetByte() and UART_UARTGetChar(), if I wanted to receive data from the ESP which it prints serially. And used UART_UARTPutString() & UART_UartPutChar() when I want to put string on serial port of ESP. It's not working. |
|
相关推荐
8个回答
|
|
你好,
请你说得具体一点好吗? 你尝试过与PC终端SW分开通信吗?PSOC & LT & & PC和ESP & LT & GT;PC?模块共享相同的电源或至少一个共同的接地吗? 另外,不同的ESP8266带有不同的固件和错误。我个人有一个坏的经验,并会购买一些固体无线模块与制造商的支持。 戴维 以上来自于百度翻译 以下为原文 Hello, Could you be a bit more specific, please? Have you tried the communication separately with PC terminal SW? PSoC <> PC and ESP <> PC? Do the modules share the same power supply or at least a common ground? Also, different ESP8266 come with different firmwares and bugs. I personally had a bad experience and would buy some solid wireless module with the manufacturer's support. David |
|
|
|
huzp 发表于 2018-10-19 11:02 你好,戴维, 谢谢你的回复。 是的,我在TeraTerm上检查了PSoC & lt;& gt;PC和ESP & lt;& PC。两者都在工作。 PSoC通过PC机设置在3.3V和ESP上。 数据只传输一部分。 以上来自于百度翻译 以下为原文 Hello David, Thank you for replying. Yes, I checked PSoC<>PC and ESP<>PC on TeraTerm. Both are working. The PSoC is set at 3.3V and ESP through PC. The data gets transmitted but only partially. |
|
|
|
wang_901218 发表于 2018-10-19 11:13 你好, 你可以分享你的存档项目,并附上一个终端的屏幕截图,发送什么,不发送什么? 你说PSoC & lt;& gt;PC发送所有字节,但是PSoC & lt;&? 戴维 以上来自于百度翻译 以下为原文 Hello, Could you share your archived project and attach a screen shot of the terminal, what is sent and what not? You say PSoC<>PC sends all bytes, but PSoC<>ESP doesn't send everything? David |
|
|
|
huzp 发表于 2018-10-19 11:30 你好, 抱歉迟到了。但是,后来我尝试使用中断,但我没有得到完整的字符串。附件屏幕截图COM 1是ESP,COM11是Arduino Uno(连接到PSoC)。 提前感谢。 以上来自于百度翻译 以下为原文 Hello, Sorry for late reply. But, I later tried by using interrupt, but I am not getting the complete string. Attached Screenshot COM 1 is ESP and COM11 is Arduino Uno (Connected to PSoC). Thanks in advance. |
|
|
|
wang_901218 发表于 2018-10-19 11:47 你能把你的完整的项目,我们都可以在你所有的设置,一看。为此,使用 创建者-gt;文件& gt;创建工作区束(最小) 并附加生成的文件。 鲍勃 以上来自于百度翻译 以下为原文 Can you please post your complete project so that we all can have a look at all of your settings. To do so, use Creator->File->Create Workspace Bundle (minimal) and attach the resulting file. Bob |
|
|
|
你使用ARDUNO IDE为ESP8266吗?
我已经实现了双向(PSoC 4和lt;-&gt;ESP8266)通信,使用ARDUNO IDE来编程ESP8266。 从PSoC的侧面,我使用StastFF()使我的序列成为一个字符串,然后我用UARTHARUARTPARSTRIN()将它发送到ESP。 例如,我有一个变量char STR〔32〕,在我的主干中使用: SCAFTF(STR,“%1.5 LF”,3.14); UARTH UART字符串(STR); UARTHUUART字符串(“rn”); 从ESP方面,我创建了一个读取传入消息的SCETCH: 无效循环() { 而(Serial.Field)(G.;0) PurrimeCin字节(Serial.Read()); } 字节(字节常量字节) { 静态字符输入线[最大输入端]; 静态无符号int输入POS=0; 开关(字节) { 案例“n”:/ /正文结束 输入句柄[in PosipPo]=0;/ /终止空字节 / /终止符到达!过程输入线在这里… 过程数据(输入输出线); /下次重置缓冲区 输入POS=0; 断裂; 案例“R”:/ /丢弃回车 断裂; 违约: /如果不满则继续添加…允许终止空字节 如果(输入PoS & lt;(Max输入(1))) 输入数据行[输入输出PoS+++ ] =字节; 断裂; 开关端/端 } //进程结束字节 空进程数据(conchchar *数据) { Serial.println(数据); 进程/数据的结尾 以上来自于百度翻译 以下为原文 Are you using the Arduino IDE for the ESP8266? I have achieved bidirectional (PSoC 4 <-> ESP8266) communication using the Arduino IDE to program the ESP8266. From the side of PSoC, I used sprintf() to make my sequence a string, and then i sent it to ESP using UART_UARTPutString() . For example, I have a variable char str[32] and I use in my main: sprintf(str, "%1.5lf", 3.14); UART_UARTPutString(str); UART_UARTPutString("rn"); From the ESP side, I created this scetch that reads incoming messages: void loop() { while (Serial.available () > 0) processIncomingByte (Serial.read ()); } void processIncomingByte (const byte inByte) { static char input_line [MAX_INPUT]; static unsigned int input_pos = 0; switch (inByte) { case 'n': // end of text input_line [input_pos] = 0; // terminating null byte // terminator reached! process input_line here ... process_data (input_line); // reset buffer for next time input_pos = 0; break; case 'r': // discard carriage return break; default: // keep adding if not full ... allow for terminating null byte if (input_pos < (MAX_INPUT - 1)) input_line [input_pos++] = inByte; break; } // end of switch } // end of processIncomingByte void process_data (const char * data) { Serial.println (data); } // end of process_data |
|
|
|
iwuwjgj 发表于 2018-10-19 12:06 当我使用StaveFF()或ScFF()获得奇数行为时,我会增加堆大小。还检查输入/输出缓冲区的大小和使用的任何字符串数组,以确保它们至少比您需要的字节数大。我不知道有多少次我看到人们使用相同大小的缓冲区,就像字符串的长度忘记了终止零点一样。当你的字符串超过数组的大小时,奇怪的事情会发生,这取决于你定义的变量的顺序,甚至可能会工作一段时间。 对不起,如果上面的建议似乎太琐碎,但当事情没有意义的时候,我开始寻找最简单的错误。我常常变得太固执,不去寻找它们,浪费时间。 作记号 以上来自于百度翻译 以下为原文 When I get odd behavior using sprintf() or scanf() I would increase the heap size. Also check the size of your input/output buffer and any string arrays you are using to make sure they are at least a few bytes bigger than you need. I don't know how many times I have seen people use exactly the same size buffer as the length of the string forgetting about the terminating zero. When your string exceeds the size of the array, weird things can happen depending on the order of your defined variaibles, and it may even almost work for a while. Sorry if the above suggestions seem too trivial, but when things don't make sense I start looking for the simplest of mistakes. Often I even get too stubborn to look for them and waste time. Mark |
|
|
|
你好,
谢谢大家抽出时间回答问题。 这个问题已经解决了。 我没有使用任何ISR的代码。 我做了这样的事情: (1) { 如果((UARTHI UART GETCHAR)!= 0) { x= uARTHAR-UARTGETHARCH(); 缓冲区〔0〕=x; //材料 UARTHU UART字符串(InBuffer); UARTHUUART字符串(“NR”); UARTHARXRXCUBICALD中断(); } } UART RX TX蜂鸣器大小增加到100,在UART SCB块中没有其他改变。 以上来自于百度翻译 以下为原文 Hello, Thank you everyone for taking time and replying to the question. The issue is resolved. I didn't use any ISR for the code. I did something like this: while(1) { if((UART_UartGetChar)!=0) { x = UART_UartGetChar(); InBuffer[0] = x; //did_stuff UART_UartPutString(InBuffer); UART_UartPutString("nr"); UART_rx_ClearInterrupt(); } } UART rx-tx buzzer size increased to 100 and nothing else changed in the UART SCB Block. |
|
|
|
只有小组成员才能发言,加入小组>>
754个成员聚集在这个小组
加入小组2106 浏览 1 评论
1853 浏览 1 评论
3672 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1788 浏览 6 评论
1536 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
575浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
427浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
439浏览 2评论
389浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
921浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 10:33 , Processed in 1.039582 second(s), Total 62, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号